Top Banner

of 62

X13-0738405

Apr 05, 2018

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 8/2/2019 X13-0738405

    1/62

    Mdulo 5

    SupervisindeSQLServer

    Contenido:

    Leccin1:Verlaactividadactual 5-2

    Leccin2:UsarelMonitordesistema 5-10

    Leccin3:UsarelSQLServerProfiler 5-21

    Leccin4:UsarlosdesencadenadoresDDL 5-30

    Leccin5:Usarlasnotificacionesdeeventos 5-40

    Prctica:SupervisindeSQLServer 5-51

  • 8/2/2019 X13-0738405

    2/62

    La informacin contenida en este documento, incluidas las direcciones URL y otras referencias a sitios webde Internet, est sujeta a modificaciones sin previo aviso. A menos que se indique lo contrario, los nombresde ejemplo de compaas, organizaciones, productos y dominios, direcciones de correo electrnico,logotipos, personas, personajes, lugares y eventos mencionados son ficticios. No se pretende indicar, ni debededucirse ninguna asociacin con compaas, organizaciones, productos, dominios, direcciones de correoelectrnico, logotipos, personas, lugares o eventos reales. Es responsabilidad del usuario el cumplimiento detodas las leyes de derechos de autor aplicables. Ninguna parte de este documento puede ser reproducida,almacenada o introducida en un sistema de recuperacin, o transmitida de ninguna forma, ni por ningn

    medio (ya sea electrnico, mecnico, por fotocopia, grabacin o de otra manera) con ningn propsito, sin laprevia autorizacin por escrito de Microsoft Corporation.

    Los nombres de fabricantes o productos y las direcciones URL se proporcionan con fines informativosnicamente y Microsoft no hace ninguna representacin ni otorga ninguna garanta, ya sea expresa, implcitao legal, en relacin a estos fabricantes o al uso de los productos con ninguna de las tecnologas de Microsoft.La inclusin de un fabricante o producto no implica aprobacin por parte de Microsoft del fabricante o delproducto. Se proporcionan vnculos a sitios de terceros. Estos sitios no estn bajo el control de Microsoft yMicrosoft no es responsable del contenido de ninguno de los sitios vinculados ni de los vnculos que stoscontengan, ni tampoco de los cambios o actualizaciones que se produzcan en dichos sitios. Microsoft no esresponsable de la difusin en web ni de ninguna otra forma de transmisin recibida desde cualesquiera delos sitios vinculados. Microsoft facilita estos vnculos nicamente para su comodidad y la inclusin de unvnculo no implica la aprobacin por parte de Microsoft del sitio o de los productos contenidos en l.

    Microsoft puede ser titular de patentes, solicitudes de patentes, marcas, derechos de autor y otros derechosde propiedad intelectual sobre el contenido de este documento. El suministro de este documento no le

    otorga a usted ninguna licencia sobre estas patentes, marcas, derechos de autor u otros derechos depropiedad intelectual, a menos que ello se prevea en un contrato escr ito de licencia de Microsoft.

    2006 Microsoft Corporation. Reservados todos los derechos.

    Microsoft, Active Directory, ActiveX, Excel, Outlook, PowerPoint, SharePoint, Verdana, Visio, Visual Basic,Windows CE, Windows Mobile, Windows NT, y Windows Server son marcas registradas o marcascomerciales de Microsoft Corporation en EE.UU. y/o en otros pases.

    Otros nombres de productos y compaas mencionados aqu pueden ser marcas comerciales de susrespectivos propietarios.

  • 8/2/2019 X13-0738405

    3/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 51

    Objetivosdelmdulo Despus de completar este mdulo, los alumnos podrn:

    Ver la actividad actual en SQL Server.

    Supervisar el rendimiento de SQL Server con el Monitor de sistema.

    Supervisar eventos de SQL Server con el SQL Server Profiler.

    Implementar desencadenadores DDL.

    Implementar notificaciones de eventos.

    Introduccin La supervisin es importante porque SQL Server proporciona un servicio en un entornodinmico. Los datos de la aplicacin cambian, el tipo de acceso que los usuariosrequieren cambia y la manera en que los usuarios se conectan cambia. SQL Server

    administra automticamente recursos a nivel de sistema como la memoria y el espacioen disco, pero la supervisin permite a los administradores identificar las tendencias derendimiento para determinar si es necesario efectuar cambios.

    Este mdulo le ofrece los conocimientos y las capacidades necesarias para supervisar elrendimiento y la actividad de SQL Server 2005.

  • 8/2/2019 X13-0738405

    4/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    52 Mdulo 5: Supervisin de SQL Server

    Leccin1: Verlaactividadactual

    Objetivosdelaleccin Despus de completar esta leccin, los alumnos podrn:

    Describir el objetivo del Monitor de actividad.

    Describir los objetos de administracin dinmica.

    Introduccin Puede supervisar la actividad actual en SQL Server mediante el componente Monitor deactividad de SQL Server Management Studio o las vistas de administracin dinmicapara obtener informacin sobre las conexiones de los usuarios al Motor de base dedatos y los bloqueos que mantienen.

    Supervisar la actividad actual puede ayudarle a solucionar problemas de bloqueo de labase de datos y le permite finalizar un proceso paralizado o que ha dejado de responder.

  • 8/2/2019 X13-0738405

    5/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 53

    QueselMonitordeactividad?

    Introduccin El Monitor de actividad es una herramienta grfica de SQL Server Management Studioque muestra informacin sobre los procesos de usuario y bloqueos actuales. Puede usarel Monitor de actividad para solucionar problemas de simultaneidad, como los retrasosexcesivos en consultas, mientras se liberan los bloqueos o los procesos paralizados quetienen lugar cuando dos procesos esperan a que se liberen los bloqueos y ninguno deellos puede continuar.

    PginasdelMonitordeactividad

    El Monitor de actividad muestra informacin sobre las conexiones abiertas y losbloqueos actuales. Puede ver informacin en el Monitor de actividad en tres pginas:Informacin del proceso, Bloqueos por proceso y Bloqueos por objeto.

    Informacin del proceso. En la pgina

  • 8/2/2019 X13-0738405

    6/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    54 Mdulo 5: Supervisin de SQL Server

    Qusonlosobjetosdeadministracindinmica?

    Introduccin Puede usar vistas de administracin dinmica y funciones de administracin dinmicapara consultar metadatos dinmicos en SQL Server 2005; proporcionan informacinsobre el estado actual de SQL Server, como los bloqueos actuales de una base de datos.

    Vistasdeadministracindinmica

    Las vistas de administracin dinmica se muestran con vistas de catlogo en la carpetaVistas del sistema en el Explorador de objetos de SQL Server Management Studio.Mientras que las vistas de catlogo se pueden usar para ver la informacin deconfiguracin esttica, las vistas de administracin dinmica devuelven el estado actualde actividad dinmica de SQL Server. Las vistas de administracin dinmica, al igualque las vistas de catlogo, se definen en el esquema sys, pero sus nombres generalmente

    contienen el prefijo dm para distinguirlas de las vistas de catlogo.

    La tabla siguiente muestra algunas de las vistas de administracin dinmica que suelenusarse.

    Vista de administracin dinmica Descripcin

    sys.dm_db_partition_stats Devuelve informacin sobre recuentos depginas y filas para cada particin de labase de datos

    sys.dm_exec_sessions Devuelve informacin sobre todas lassesiones actuales conectadas al servidor

    sys.dm_io_pending_io_requests Devuelve informacin sobre las solicitudes

    de entrada/salida (E/S) pendientessys.dm_os_memory_pools Devuelve informacin sobre cada cach deobjetos simple del sistema

    sys.dm_os_threads Devuelve informacin sobre las amenazasen el sistema

    sys.dm_broker_queue_monitors Devuelve informacin sobre cada monitorde cola de Service Broker del sistema

    sys.dm_tran_locks Devuelve informacin sobre cada bloqueoconcedido o solicitado actualmente en elsistema

  • 8/2/2019 X13-0738405

    7/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 55

    Paraobtenermsinformacin Para obtener ms informacin sobre los objetos deadministracin dinmica disponibles en SQL Server 2005, consulte Funciones y vistasde administracin dinmica en los Libros en pantalla de SQL Server.

    Consultarvistasdeadministracindinmica

    Puede consultar vistas de administracin dinmica mediante una instruccin SELECT

    estndar. Por ejemplo, el cdigo siguiente devuelve detalles sobre el estado de bloqueoactual del sistema:

    SELECT * FROM sys.dm_tran_locks

  • 8/2/2019 X13-0738405

    8/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    56 Mdulo 5: Supervisin de SQL Server

    Ejercicio: Verlaactividadactual

    Objetivos El objetivo de este ejercicio es permitir que los alumnos vean la actividad actual.

    Preparacin Asegrese de que la mquina virtual 5406A-MIA-SQL-05 se est ejecutando y de que hainiciado sesin comoAlumno.

    Si no se ha iniciado ninguna mquina virtual, siga estos pasos:

    1. Cierre todas las dems mquinas virtuales que se estn ejecutando.

    2. Inicie la mquina virtual.

    3. En el cuadro de dilogo Iniciar sesin en Windows, realice el procedimiento deinicio de sesin usando el nombre de usuarioAlumno y la contrasea Pa$$w0rd.

    VerlaactividadactualconelMonitordeactividad

    1. Haga clic en Inicio, seleccione Todos los programas, Microsoft SQL Server 2005y, a continuacin, haga clic en SQL Server Management Studio.

    2. En el cuadro de dilogo Conectar al servidor, especifique los valores de la tablasiguiente y haga clic en Conectar.

    3. Si el Explorador de objetos no est visible, en el menVer, haga clic en elExplorador de objetos.

    4. En el Explorador de objetos, expandaAdministracin y, a continuacin, hagadoble clic en Monitor de actividad.

    5. En la ventana Monitor de actividad, examine la pgina Informacin del proceso yobserve las entradas actuales. Minimice la ventana Monitor de actividad.

    6. En el menArchivo, seleccioneAbrir y, a continuacin, haga clic enArchivo.Explore D:\Practices, seleccione CurrentActivityQuery.sql y, a continuacin,haga clic enAbrir. Cuando se le solicite, conctese al servidor MIAMI mediante laautenticacin de Windows.

    Propiedad Valor

    Tipo de servidor Motor de base de datos

    Nombre del servidor MIAMI

    Autenticacin Autenticacin de Windows

  • 8/2/2019 X13-0738405

    9/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 57

    7. En el lado derecho de la barra de estado, en la parte inferior de la ventana de consulta,observe el Id. de proceso, en el formulario MIAMI\Alumno(process_id).

    8. Restaure la ventana Monitor de actividad y, a continuacin, haga clic en el botnActualizar. Observe el nuevo proceso.

    9. En el panel Seleccionar una pgina, haga clic en Bloqueos por proceso. Haga clic

    en la flecha de Proceso seleccionado, y observe que el Id. de proceso para laconexin de consulta CurrentActivityQuery.sql no se muestra.

    10. En el panel Seleccionar una pgina, haga clic en Bloqueos por objeto. Observeque no se muestran objetos para el Id. de proceso CurrentActivityQuery.sql.Minimice la ventana Monitor de actividad.

    11. En la ventana CurrentActivityQuery.sql, seleccione y ejecute el cdigo siguiente:

    -- Inicie la transaccin: crear los bloqueos

    USE AdventureWorks

    BEGIN TRANSACTION

    UPDATE Production.ProductCategory

    SET [Name] = [Name] + ' - Material de la bicicleta'

    12. Restaurar la ventana Monitor de actividad. En el panel Seleccionar una pgina,haga clic en Bloqueos por proceso y, a continuacin, haga clic enActualizar.

    A continuacin, en la lista Proceso seleccionado, seleccione el Id. de procesoCurrentActivityQuery.sql. Observe el nivel clave, bloqueos (X) exclusivos.

    13. En el panel Seleccionar una pgina, haga clic en Bloqueos por objeto. A continuacin,en la lista Objeto seleccionado, seleccioneAdventureWorks.ProductCategory.Una vez ms, observe los bloqueos exclusivos mantenidos por el procesoCurrentActivityQuery.sql. Minimice la ventana Monitor de actividad.

    14. En la ventana CurrentActivityQuery.sql, seleccione y ejecute el cdigo siguiente:

    -- Actualice otra tabla: crear los bloqueos

    UPDATE Production.Product

    SET ListPrice = ListPrice * 1.1

    15. Restaure la ventana Monitor de actividad. En el panel Seleccionar una pgina,haga clic en Bloqueos por proceso. Seleccione el Id. de procesoCurrentActivityQuery.sql de la lista del Proceso seleccionado y, a continuacin,haga clic en el botnActualizar. Observe los nuevos bloqueos.

    16. En el panel Seleccionar una pgina, haga clic en Bloqueos por objeto. A continuacin,en la lista Objeto seleccionado, seleccione AdventureWorks.Product. Una vezms, observe los bloqueos exclusivos para el proceso CurrentActivityQuery.sql.Minimice la ventana Monitor de actividad.

    17. En la ventana CurrentActivityQuery.sql, seleccione y ejecute el cdigo siguiente:

    -- revierta la transaccin: liberar los bloqueos

    ROLLBACK TRANSACTION

    18. Restaure la ventana Monitor de actividad. En el panel Seleccionar una pgina,haga clic en Bloqueos por proceso. Seleccione el Id. de procesoCurrentActivityQuery.sql de la lista del Proceso seleccionado y, a continuacin,haga clic en el botnActualizar. Observe que slo permanece un bloqueo de basede datos compartido.

  • 8/2/2019 X13-0738405

    10/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    58 Mdulo 5: Supervisin de SQL Server

    19. En el panel Seleccionar una pgina, haga clic en Bloqueos por objeto. En la listaObjeto seleccionado, observe que no se muestra ninguna de las tablas deAdventureWorks. Minimice la ventana Monitor de actividad.

    20. Deje abiertas la ventana CurrentActivityQuery.sql y la ventana Monitor deactividad. Las usar en el procedimiento siguiente.

    Verlaactividadactualmediantelasvistasdeadministracindinmica

    1. En la ventana CurrentActivityQuery.sql, seleccione y ejecute el cdigo siguiente:

    --Vea los bloqueos del proceso del usuario actual

    USE AdventureWorks

    SELECT * FROM sys.dm_tran_locks

    WHERE request_session_id = @@spid

    2. Examine el panel Resultados. Tenga en cuenta que ste es el mismo bloqueo debase de datos que se muestra en la ventana Monitor de actividad.

    3. En la ventana CurrentActivityQuery.sql, seleccione y ejecute el cdigo siguiente:

    -- Inicie la transaccin: crear los bloqueos

    USE AdventureWorks

    BEGIN TRANSACTION

    UPDATE Production.ProductCategory

    SET [Name] = [Name] + ' - Material de la bicicleta'

    4. Examine el panel Resultados. Observe el nmero de filas afectadas.

    5. En la ventana CurrentActivityQuery.sql, seleccione y ejecute el cdigo siguiente:

    --Vea los bloqueos del proceso del usuario actual

    USE AdventureWorks

    SELECT * FROM sys.dm_tran_locks

    WHERE request_session_id = @@spid

    6. Examine el panel Resultados. Observe los nuevos bloqueos en la lista.

    7. En la ventana CurrentActivityQuery.sql, seleccione y ejecute el cdigo siguiente:

    -- Actualice otra tabla: crear los bloqueos

    UPDATE Production.Product

    SET ListPrice = ListPrice * 1.1

    8. Examine el panel Resultados. Observe el nmero de filas afectadas.

    9. En la ventana CurrentActivityQuery.sql, seleccione y ejecute el cdigo siguiente:

    --Vea los bloqueos del proceso del usuario actual

    USE AdventureWorks

    SELECT * FROM sys.dm_tran_locks

    WHERE request_session_id = @@spid

    10. Examine el panel Resultados. Observe los nuevos bloqueos en la lista.

    11. En la ventana CurrentActivityQuery.sql, seleccione y ejecute el cdigo siguiente:

    -- revierta la transaccin: liberar los bloqueos

    ROLLBACK TRANSACTION

    12. Examine el panel Resultados. Observe que el comando finaliza correctamente.

  • 8/2/2019 X13-0738405

    11/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 59

    13. En la ventana CurrentActivityQuery.sql, seleccione y ejecute el cdigo siguiente:

    --Vea los bloqueos del proceso del usuario actual

    USE AdventureWorks

    SELECT * FROM sys.dm_tran_locks

    WHERE request_session_id = @@spid

    14. Examine el panel Resultados. Observe que slo se muestra el bloqueo de la basede datos.

    15. Cierre la ventana CurrentActivityQuery.sql.

    Confirmarquesehaliberadoelbloqueodelabasededatos

    1. Restaure la ventana Monitor de actividad.

    2. En la pgina Informacin del proceso, haga clic en el botnActualizar. Observeque ya no se muestran procesos para el Id. de proceso CurrentActivityQuery.sql.

    3. En el panel Seleccionar una pgina, haga clic en Bloqueos por proceso. En la listaProceso seleccionado, observe que no se muestra el Id. de procesoCurrentActivityQuery.sql.

    4. En el panel Seleccionar una pgina, haga clic en Bloqueos por objeto. En la lista

    Objeto seleccionado, observe que no se muestra ninguna de las tablas deAdventureWorks.

    5. Cierre el Monitor de actividad.

  • 8/2/2019 X13-0738405

    12/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    510 Mdulo 5: Supervisin de SQL Server

    Leccin2: UsarelMonitordesistema

    Objetivosdelaleccin Despus de completar esta leccin, los alumnos podrn:

    Describir el Monitor de sistema.

    Describir el propsito de los objetos de rendimiento de SQL Server.

    Describir las consideraciones que se aplican al elegir los contadores que sesupervisarn.

    Usar el Monitor de sistema para supervisar el rendimiento de SQL Server.

    Introduccin Puede usar el Monitor de sistema para obtener informacin exhaustiva sobre su equipo

    y sobre las instancias de SQL Server que se ejecutan en su equipo. A continuacin,puede usar esta informacin para diagnosticar los problemas de rendimiento eidentificar los cuellos de botella del sistema. En esta leccin, obtendr informacinsobre cmo usar el Monitor de sistema de la herramienta Rendimiento de MicrosoftManagement Console (MMC) para recopilar y ver los datos en tiempo real o registradossobre la memoria,el disco, el procesador y la actividad de SQL Server.

  • 8/2/2019 X13-0738405

    13/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 511

    IntroduccinalMonitordesistema

    Introduccin El Monitor de sistema es un complemento de Microsoft Management Console (MMC)que puede usarse para ver medidas de rendimiento del sistema, como el uso delprocesador y de la memoria o las estadsticas de actividad de disco.

    Objetos,instanciasycontadoresdelMonitordesistema

    Puede ver el Monitor de sistema mediante el inicio de la aplicacin Rendimiento en elgrupo de programas de Herramientas administrativas. El Monitor de sistema clasifica lainformacin en objetos, contadores e instancias. Entender cmo se relacionan entre s losobjetos, los contadores y las instancias es fundamental para usar eficazmente el Monitorde sistema.

    Objetos. En el Monitor de sistema, los objetos son componentes principales osubsistemas del sistema del equipo. Los objetos pueden ser hardware (por ejemplo,un disco duro), software (por ejemplo, un proceso) o aplicaciones (por ejemplo, unainstancia de SQL Server). Hay un nmero fijo de objetos en Microsoft WindowsServer 2003 y, al instalar SQL Server, se agregan ms objetos especficos de SQLServer.

    Contadores. Los contadores recopilan datos sobre diferentes aspectos de los objetos.Por ejemplo, para el objeto Proceso, los contadores recopilan los datos sobre el tiempode procesadory el tiempo de usuario. Los contadores se integran en el sistemaoperativo y leen continuamente datos de rendimiento, tanto si estn visibles en elMonitor de sistema como si no. Si un tipo de objeto tiene varias instancias, loscontadores recopilan estadsticas de cada instancia o del total de todas las instancias.

    Instancias. Las instancias son mltiplos del mismo tipo de objeto. Por ejemplo, si unsistema tiene varios procesadores, el tipo de objeto Procesador tendr varias instancias.Cuando se ve informacin sobre rendimiento en el Monitor de sistema, puede decidirver los valores para una instancia individual de un objeto (por ejemplo, el uso de unnico procesador) o los valores combinados para todas las instancias de ese objeto(por ejemplo, el uso general de procesador para todos los procesadores del sistema).

  • 8/2/2019 X13-0738405

    14/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    512 Mdulo 5: Supervisin de SQL Server

    En el Monitor de sistema, puede especificar qu contadores se mostrarn. Puedemostrar los valores de contador como un grfico, un histograma (grfico de barras)o un informe. Los grficos, histogramas e informes se pueden ver en un explorador eimprimirse cuando los datos de rendimiento se guardan como archivo de Lenguaje demarcado de hipertexto (HTML). Los informes se pueden exportar a una hoja de clculo,como las de Microsoft Office Excel, para un anlisis ms extenso.

    Importante Las instancias en el Monitor de sistema no son las mismas que lasinstancias de SQL Server. Las instancias en el Monitor de sistema se refieren a cadaaparicin de un objeto.

    Registrosyalertasderendimiento

    Adems del complemento MMC Monitor de sistema, la herramienta Rendimientoincluye un segundo complemento denominado Registros y alertas de rendimiento.Puede usar este complemento para capturar informacin sobre el rendimiento en unarchivo de registro para poder verlo posteriormente en el Monitor de sistema. Losregistros de contador registran datos sobre los recursos de hardware y los servicios delsistema basados en el rendimiento a lo largo del tiempo. Los registros de contador sontiles para realizar un seguimiento de las tendencias. Los registros de traza recopilan las

    trazas de eventos que miden las estadsticas de rendimiento asociadas a eventos comoE/S de disco y archivo.

    Los archivos de registro proporcionan un caudal de informacin para la solucin deproblemas o el planeamiento. Aunque los grficos, alertas e informes sobre la actividadactual proporcionan informacin instantnea, los archivos de registro le permitenrealizar el seguimiento de los contadores durante un largo perodo de tiempo. As,puede examinar la informacin de forma ms exhaustiva y documentar el rendimientodel sistema.

    Adems, puede configurar alertas que se disparan cuando un contador alcanza un valorumbral concreto. Las alertas son tiles si no est supervisando activamente un contadordeterminado pero desea ser notificado cuando ste est por encima o por debajo de unvalor especificado para poder as investigar y determinar la causa del cambio. Porejemplo, puede establecer una alerta cuando el porcentaje de espacio en disco usadosupere el 80% o cuando el nmero de intentos de inicio de sesin fallidos exceda unnmero concreto.

    Importante Las alertas en el Monitor de sistema, aunque realizan una funcinsimilar, no estn relacionadas con Alertas en SQL Server.

  • 8/2/2019 X13-0738405

    15/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 513

    ObjetosderendimientodeSQLServer

    Introduccin SQL Server proporciona objetos y contadores que el Monitor de sistema puede usarpara supervisar la actividad en equipos que ejecutan una instancia de SQL Server.Un objeto es cualquier recurso de SQL Server, como el administrador de bloqueos deSQL Server. Cada objeto contiene uno o ms contadores que determinan variosaspectos de los objetos para supervisar. Por ejemplo, el objeto Bloqueos de SQL Servercontiene los contadores Nmero de interbloqueos/seg. y Tiempos de espera debloqueos/seg.

    ObjetosdeSQLServer La tabla siguiente describe algunos objetos de SQL Server usados frecuentemente.

    Objeto de rendimiento DescripcinSQLServer:Access Methods Busca y mide la asignacin de objetos de

    base de datos de SQL Server (por ejemplo,el nmero de bsquedas del ndice o elnmero de pginas que se asignan a losndices y a los datos).

    SQLServer:Buffer Manager Proporciona informacin sobre los bferesde memoria usados por SQL Server, comola memoria libre y la frecuencia de aciertosde cach del bfer.

    SQLServer:Databases Proporciona informacin sobre una base dedatos de SQL Server, como la cantidad de

    espacio libre de registro disponible o elnmero de transacciones activas en la basede datos. Puede haber varias instancias deeste objeto.

    SQLServer:General Statistics Proporciona informacin sobre la actividadgeneral de servidores, como el nmero deusuarios conectados a una instancia deSQL Server.

  • 8/2/2019 X13-0738405

    16/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    514 Mdulo 5: Supervisin de SQL Server

    Hay muchos otros objetos de SQL Server y tambin algunos objetos del Agente SQLServer. Cuando varias instancias de SQL Server se instalan en el mismo equipo, cadainstancia tiene su propio conjunto de objetos de rendimiento.

    Paraobtenermsinformacin Para obtener ms informacin acerca de los objetosde rendimiento de SQL Server, consulte Usar objetos de SQL Server en los Libros enpantalla de SQL Server 2005.

    SQLServer:Locks Proporciona informacin sobre lassolicitudes de bloqueo individualesrealizadas por SQL Server, como lostiempos de espera por bloqueo y losinterbloqueos. Puede haber varias

    instancias de este objeto.SQLServer:Memory Manager Proporciona informacin sobre el uso de

    memoria de SQL Server, como el nmerototal de estructuras de bloqueoactualmente asignadas.

    SQLServer:Plan Cache Proporciona informacin sobre la cach deSQL Server usada para almacenar objetoscomo procedimientos, desencadenadores yplanes de consulta almacenados.

    SQLServer:SQL Errors Proporciona informacin sobre los erroresde SQL Server.

    SQLServer:Transactions Proporciona informacin sobre las

    transacciones activas en SQL Server, comoel nmero total de transacciones y elnmero de transacciones de instantnea.

    Objeto de rendimiento Descripcin

  • 8/2/2019 X13-0738405

    17/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 515

    ConsideracionesparasupervisarSQLServer

    Introduccin La supervisin de una instancia de SQL Server requiere el anlisis de algunos aspectosclave del sistema. Eliminar los cuellos de botella fsicos puede afectar inmediatamente alrendimiento e incluso localizar problemas de diseo en la base de datos, consultasTransact-SQL o aplicaciones cliente.

    Es importante supervisar el rendimiento de SQL Server para poder identificar cuellos debotella, determinar su causa y eliminarlos. Los cuellos de botella pueden eliminarseajustando bases de datos de SQL Server, ndices y consultas; actualizando el hardware;o distribuyendo la carga del servidor entre otros servidores SQL.

    Supervisarlaactividaddedisco SQL Server usa las llamadas de entrada/salida (E/S) del sistema operativo Windowspara realizar operaciones de lectura y escritura en sus subsistemas de disco. SQL Serveradministra cundo y cmo se realizan las operaciones E/S de disco, pero el sistemaoperativo Windows realiza las operaciones E/S subyacentes. El subsistema E/S incluyeel bus del sistema, las tarjetas controladoras de disco, los discos, las unidades de cinta,las unidades de CD-ROM y muchos otros dispositivos de E/S. Las operaciones E/S dedisco son con frecuencia la causa de los cuellos de botella en un sistema.

    Supervisar la actividad de disco requiere concentrarse en dos reas:

    Supervisar la E/S de disco y detectar la paginacin excesiva.

    Aislar la actividad de disco que crea SQL Server.

  • 8/2/2019 X13-0738405

    18/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    516 Mdulo 5: Supervisin de SQL Server

    Puede supervisar los contadores siguientes en el objeto DiscoFsico para determinar laE/S de disco y detectar la paginacin excesiva.

    Use los valores de los contadores Longitud actual de la cola de disco y % tiempo en

    disco para detectar los cuellos de botella dentro del subsistema de disco. Si los valoresde los contadores Longitud actual de la cola de disco y % de tiempo en disco sonaltos de forma consistente, considere la posibilidad de efectuar una de las accionessiguientes:

    Usar una unidad de disco ms rpida.

    Mover algunos archivos a un disco o servidor adicional.

    Agregar discos a un dispositivo de almacenamiento de matriz redundante dediscos independientes (RAID), si se usa alguno.

    Supervise el contador Errores de pgina/s. en el objeto Memoria para asegurarse deque la actividad de disco no est ocasionada por la paginacin.

    Nota Si tiene ms de una particin lgica en el mismo disco duro, use los contadoresDiscoLgico en lugar de los contadores DiscoFsico.

    Puede supervisar los contadores siguientes en el objeto SQL Server:Buffer Managerpara aislar la actividad de disco generada por componentes de SQL Server.

    Si los valores para estos contadores se acercan al lmite de capacidad del subsistema deE/S de hardware, intente reducir los valores ajustando su aplicacin o base de datos

    Contador Descripcin Directrices

    % tiempo de disco Supervisa el porcentaje detiempo durante el cual eldisco est ocupado con laactividad de lectura yescritura.

    Si este contador es alto(ms del 90%), compruebeel contador Longitud actualde la cola de disco.

    Longitud media de la colade disco

    Supervisa el nmero mediode solicitudes de lectura yescritura que se ponen encola.

    Este contador no debera sermayor que dos veces elnmero de husos.

    Longitud actual de la colade disco

    Supervisa el nmero actualde solicitudes de lectura yescritura que se ponen encola.

    Este contador no debera sermayor que dos veces elnmero de husos.

    Contador Descripcin Directrices

    Lecturas de pgina/seg. Nmero de lecturas depgina de la base de datosfsica emitidas por segundo.Esta estadstica muestra elnmero total de lecturas depgina fsica para todas las

    bases de datos.

    Minimice el nmero delecturas, bien usando unacach de datos mayor,ndices inteligentes yconsultas ms eficaces, biencambiando el diseo de la

    base de datos.Escrituras de pgina/seg. Nmero de escrituras de

    pgina de la base de datosfsica emitidas por segundo.

    Minimice el nmero deescrituras, bien usando unacach de datos mayor,ndices inteligentes yconsultas ms eficaces, biencambiando el diseo de labase de datos.

  • 8/2/2019 X13-0738405

    19/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 517

    para reducir las operaciones de E/S (como el alcance del ndice, mejores ndices onormalizacin), aumentando la capacidad de E/S del hardware o agregando memoria.

    Supervisarelusodememoria

    Supervise peridicamente una instancia de SQL Server para confirmar que el uso de lamemoria se encuentra dentro de los valores normales. Debe asegurarse de que ningnproceso, incluido SQL Server, usa demasiada memoria o est restringido por unamemoria insuficiente.

    Para supervisar en busca de una condicin de memoria baja, use los contadores deobjeto descritos en la tabla siguiente.

    Objeto: contador Descripcin Directrices

    Memoria: Bytes disponibles Indica cuntos bytes dememoria estn disponiblesactualmente para su usoPginas/seg.por parte de procesos.

    Los valores bajos para elcontador Bytes disponiblespuede indicar una escasezgeneral de memoria en elequipo o que una aplicacinno est liberando la memoria.

    Memoria: Pginas/seg. Indica el nmero depginas que se recuperaron

    del disco debido a loserrores de pgina en discoo que se escribieron en elespacio disponible deldisco conjunto de trabajodebido a los errores depgina.

    Un alto nmero para elcontador Pginas/seg.

    podra indicar unapaginacin excesiva.Supervise el contadorMemoria: Errores depgina/s. para asegurarse deque la actividad del disco noest ocasionada por lapaginacin.

    Proceso: Errores de pgina/s(instancia sqlservr)

    Windows Virtual MemoryManager toma las pginasde SQL Server y otrosprocesos cuando recorta

    los tamaos del conjuntode trabajo de esos procesos.

    Un nmero alto para estecontador indica unapaginacin excesiva ysacudidas en el disco. Use

    este contador para comprobarsi SQL Server u algn otroproceso est produciendo lapaginacin excesiva.

    Proceso: Conjunto detrabajo (instanciasqlservr)

    Muestra la cantidad dememoria usada por unproceso.

    Si este nmero se encuentrade forma coherente pordebajo de la cantidad dememoria establecida por lasopciones de servidormemoria mnima delservidor y memoriamxima del servidor, SQLServer se configurar para

    usar demasiada memoria.SQL Server: BufferManager:frecuencia deaciertos de cach del bfer

    Supervisa el porcentaje depginas necesariasencontradas en la cach debfer, sin leer del discoduro. No diferencia entre lamemoria fsica y la memoriadel archivo de paginacinusado para la cach de bfer.

    Agregue ms memoriahasta que el valor seaconstantemente mayorque el 90%.

  • 8/2/2019 X13-0738405

    20/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    518 Mdulo 5: Supervisin de SQL Server

    SupervisarelusodeCPU Supervise peridicamente una instancia de SQL Server para determinar si las tasas deuso de CPU estn dentro de los valores normales. Una tasa continuamente alta de usode CPU puede indicar la necesidad de actualizar la CPU o de agregar variosprocesadores. Por otro lado, una tasa alta de uso de CPU puede indicar la existencia deuna aplicacin mal ajustada o mal diseada. Optimizar la aplicacin puede reducir eluso de CPU.

    Use los contadores descritos en la tabla siguiente para supervisar el uso de CPU.

    SQL Server: BufferManager:total depginasSQL

    Supervisa el nmero totalde pginas de la cach debfer, incluidas las pginasde la base de datos, laslibres y las robadas de

    otros procesos.

    Un nmero bajo puedeindicar sacudidas frecuentesen el disco E/S. Considere laposibilidad de agregar msmemoria.

    Servidor:MemoryManager: Memoria totaldel servidor (KB)

    Supervisa la cantidad totalde memoria dinmica queusa el servidor.

    Si este contador esconsistentemente altocomparado con la cantidadde memoria fsicadisponible, puede que senecesite ms memoria.

    Objeto: contador Descripcin Directrices

    Objeto: contador Descripcin Directrices

    Procesador: % de tiempodel procesador

    Supervisa la cantidad detiempo que la CPU invierteen ejecutar un subprocesoque no se encuentrainactivo.

    Un estado coherente deentre el 80% y el 90% puedeindicar la necesidad deactualizar su CPU o deagregar ms procesadores.En los sistemasmultiprocesador, superviseuna instancia independientede este contador para cadaprocesador.

    Proceso: % tiempo delprocesador (instanciasqlservr)

    Supervisa la cantidad detiempo que la CPU invierteen ejecutar un subprocesoen el proceso SQL Server.

    Use este contador paraevaluar la contribucin deSQL Server al uso total delprocesador.

  • 8/2/2019 X13-0738405

    21/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 519

    Demostracin: UsarelMonitordesistema

    Introduccin En esta demostracin, aprender cmo supervisar el rendimiento de SQL Servermediante el Monitor de sistema.

    Preparacin Asegrese de que la mquina virtual 5406A-MIA-SQL-05 se est ejecutando y de que hainiciado sesin comoAlumno.

    Si no se ha iniciado ninguna mquina virtual, siga estos pasos:

    1. Cierre todas las dems mquinas virtuales que se estn ejecutando.

    2. Inicie la mquina virtual.

    3. En el cuadro de dilogo Iniciar sesin en Windows, realice el procedimiento deinicio de sesin usando el nombre de usuarioAlumno y la contrasea Pa$$w0rd.

    VerlaactividadenlneaenelMonitordesistema

    1. Haga clic en Inicio, seleccione Todos los programas y Microsoft SQL Server2005 y, a continuacin, haga clic en SQL Server Management Studio.

    2. En el cuadro de dilogo Conectar al servidor, especifique los valores de la tablasiguiente y haga clic en Conectar.

    3. Haga clic en Inicio, seleccione Herramientas administrativas y, a continuacin,haga clic en Rendimiento.

    4. Agregue los contadores mostrados en la tabla siguiente.

    Propiedad Valor

    Tipo de servidor Motor de base de datos

    Nombre del servidor MIAMI

    Autenticacin Autenticacin de Windows

    Objeto de rendimiento Contador Instancia

    SQLServer:Databases Transacciones activas AdventureWorks

    SQLServer:Locks Solicitudes de bloqueo/seg. _Total

    SQLServer:Buffer Manager Lecturas de pgina/seg. n/d

    SQLServer:Buffer Manager Escrituras de pgina/seg. n/d

  • 8/2/2019 X13-0738405

    22/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    520 Mdulo 5: Supervisin de SQL Server

    5. Use el Explorador de Microsoft Windows para ver la carpeta D:\Democode\y,a continuacin, haga doble clic en RunQuery1.cmd y RunQuery2.cmd parainiciar ambos archivos de proceso por lotes. Estos dos archivos harn esforzarse alequipo que ejecuta SQL Server.

    6. Observe el grfico en el Monitor de sistema hasta que los archivos de proceso porlotes hayan finalizado y las ventanas SQLCMD se hayan cerrado.

    Sugerencia Si tiene poco tiempo, puede cerrar las ventanas SQLCMD antes deque los archivos de proceso por lotes hayan finalizado.

    Usarregistrosderendimiento

    1. En Rendimiento, expanda Registros y alertas de rendimiento, haga clic con elbotn secundario en Registros de contadores y, a continuacin, haga clic enNueva configuracin de registro.

    2. En el cuadro de dilogo Nueva configuracin de registro, escriba Prueba deesfuerzo y, a continuacin, haga clic sobreAceptar.

    3. Agregue los contadores mostrados en la tabla siguiente y, a continuacin, haga clicenAceptar para crear e iniciar el registro.

    4. Si se le pregunta si desea crear la carpeta C:\PerfLogs, haga clic en S.5. Use el Explorador de Microsoft Windows para ver la carpeta D:\Democode\y,

    a continuacin, haga doble clic sobre RunQuery1.cmd y RunQuery2.cmd parainiciar ambos archivos de proceso por lotes. Estos dos archivos harn esforzarse alequipo que ejecuta SQL Server.

    6. Permita que el registro registre datos durante 2 minutos y, a continuacin, detengael registro mediante un clic en el botn Detener el registro seleccionado de labarra de herramientas.

    7. En la herramienta Rendimiento, haga clic en el nodo Monitor de sistema.

    8. En el Monitor de sistema, haga clic en el botnVer datos del registro.

    9. En el cuadro de dilogo Propiedades de Monitor de sistema, haga clic enArchivos de registro y, a continuacin, elijaAgregar.

    10. En el cuadro de dilogo Seleccionar el archivo de registro, haga clic en Pruebade esfuerzo_000001.blg, haga clic enAbrir y, a continuacin, haga clic enAceptar.

    11. Haga clic en el botnAgregar de la barra de herramientas y, a continuacin,agregue todos los contadores en el registro mediante la seleccin de cada objeto yla agregacin de los contadores. (Puede que algunos ya estn agregados).

    12. Cierre la herramienta Rendimiento.

    Objeto Contador Instancia

    Procesador % de tiempo de procesador _Total

    Memoria Pginas/s n/d

    DiscoFsico Longitud media de la cola dedisco

    _Total

    SQLServer:Databases Transacciones activas AdventureWorks

    SQLServer:Locks Solicitudes de bloqueo/seg. _Total

    SQLServer:Buffer Manager Lecturas de pgina/seg. n/d

    SQLServer:Buffer Manager Escrituras de pgina/seg. n/d

  • 8/2/2019 X13-0738405

    23/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 521

    Leccin3: UsarelSQLServerProfiler

    Objetivosdelaleccin Despus de completar esta leccin, los alumnos podrn:

    Describir las funciones del SQL Server Profiler.

    Describir las opciones para la creacin de una traza del SQL Server Profiler.

    Describir columnas, eventos y categoras de traza.

    Usar el SQL Server Profiler.

    Introduccin El SQL Server Profiler le proporciona la capacidad de seguir paso a paso la actividad deservidores y de bases de datos, como las actividades de inicio de sesin,

    de usuario y de aplicacin. Puede capturar los datos en una tabla, un archivo o unasecuencia de comandos Transact-SQL para un anlisis posterior.

    En esta leccin, obtendr informacin sobre cmo usar el SQL Server Profiler paraseguir paso a paso la actividad de SQL Server.

  • 8/2/2019 X13-0738405

    24/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    522 Mdulo 5: Supervisin de SQL Server

    QueselSQLServerProfiler?

    Introduccin El Analizador de Microsoft SQL Server es una herramienta de interfaz grfica de usuariopara supervisar una instancia del Motor de base de datos de SQL Server o AnalysisServices. Puede capturar y guardar los datos sobre cada evento en un archivo o tablapara analizarlos posteriormente. Por ejemplo, puede supervisar un entorno deproduccin para ver qu procedimientos almacenados afectan al rendimiento debido auna ejecucin demasiado lenta.

    FuncionesdelSQLServerProfiler

    El SQL Server Profiler muestra cmo SQL Server resuelve las consultas internamente, loque permite a los administradores ver exactamente qu instrucciones Transact-SQL seenvan al servidor y cmo ste tiene acceso a la base de datos para devolver conjuntos de

    resultados.Mediante el uso del SQL Server Profiler, podr:

    Crear una traza paso a paso basada en una plantilla reutilizable.

    Consultar los resultados de traza mientras se ejecuta.

    Almacenar los resultados de traza en una tabla o en un archivo para un anlisisms detallado.

    Iniciar, detener, poner en pausa y modificar los resultados de traza cuando seanecesario.

    Reproducir los resultados de traza.

    Use el SQL Server Profiler para supervisar slo aquellos eventos que le interesen. Si haydemasiada actividad para examinarla con facilidad, puede filtrar eventos basndose enla informacin que desea, de modo que slo se recopile un subconjunto de los datos deeventos. Supervisar demasiados eventos puede sobrecargar al servidor y al proceso desupervisin, lo que puede producir que el archivo o la tabla de traza se hagan muygrandes, sobre todo cuando el proceso de supervisin tiene lugar durante un largoperodo de tiempo.

    Paraobtenermsinformacin Para obtener ms informacin sobre escenarios enlos que se puede usar el SQL Server Profiler, consulte Escenarios para el uso del SQLServer Profiler en los Libros en pantalla de SQL Server 2005.

  • 8/2/2019 X13-0738405

    25/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 523

    ObtenerlatrazadeactividaddeSQLServermedianteelSQLServerProfiler

    Para usar el SQL Server Profiler, primero decida lo que desea seguir paso a paso y, acontinuacin, elija los criterios. Las actividades que podra desear supervisar incluyen:

    Consultas con un mal rendimiento.

    Consultas que provocan recorridos de tabla.

    Actividades de usuarios o aplicaciones individuales.

    Rendimiento de la base de datos tempdb.

    Problemas de interbloqueo.

    Intentos de inicio de sesin, errores, conexiones y desconexiones.

    Lecturas y escrituras del disco lgico.

    Uso de CPU a nivel de instruccin.

    Tiempo de espera para todos los eventos posteriores a la ejecucin.

    Puede establecer los procedimientos almacenados del sistema en el SQL Server Profilerpara seguir paso a paso un conjunto definido de eventos y filtrar el nivel de informacinrecopilado sobre esos eventos. Mediante el uso del procedimiento almacenado delsistema sp_trace_create, puede hacer la traza de eventos especificados en su servidor.La opcin trace_produce_blackbox crea un registro rotativo de los ltimos 5megabytes (MB) de eventos de servidor especificados.

  • 8/2/2019 X13-0738405

    26/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    524 Mdulo 5: Supervisin de SQL Server

    OpcionesdetrazadelSQLServerProfiler

    Introduccin Cuando usa el SQL Server Profiler para crear una traza, dispone de varias opciones paradefinir la actividad que se registrar y dnde se almacenar la actividad de trazaregistrada.

    Especificarunaplantilladetraza

    Los eventos incluidos en una traza estn determinados por la especificacin de lasclases de eventos que desea supervisar y los valores de datos individuales (columnas)que desea registrar. Esto se lleva a cabo mediante la seleccin de la plantilla en la quedesea basar su traza y, a continuacin, agregando o quitando clases o columnas deeventos individuales y aplicando filtros para limitar los datos recopilados basndose encriterios concretos.

    El SQL Server Profiler ofrece varias plantillas predefinidas que le permiten configurarcon facilidad los eventos que probablemente necesitar para tipos concretos deactividad. Por ejemplo, la plantilla Estndar le ayuda a crear una traza genrica pararegistrar inicios y cierres de sesin, lotes finalizados e informacin de conexin. Puedeusar esta plantilla sin modificarla para ejecutar trazas, o como punto de partida paraplantillas adicionales con configuraciones de eventos diferentes. Tambin puede crearsus propias plantillas o modificar las plantillas predefinidas.

    Guardardatosdetraza Debera guardar los datos de eventos capturados en un archivo o una tabla de SQL Servercuando necesite analizar o volver a consultar los datos capturados posteriormente.

    Al guardar una traza, puede:

    Usar un archivo o una tabla de traza para crear una carga de trabajo que se usecomo entrada para Database Engine Tuning Advisor.

    Usar un archivo de traza para capturar eventos y enviar el archivo de traza alproveedor de soporte tcnico para su anlisis.

    Usar las herramientas de procesamiento de consulta en SQL Server para teneracceso a los datos o ver los datos en el SQL Server Profiler. Slo los miembros dela funcin fija de servidor sysadmin o el creador de la tabla pueden tener acceso ala tabla de traza directamente.

  • 8/2/2019 X13-0738405

    27/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 525

    Las opciones disponibles al guardar una traza en una tabla son:

    La ubicacin y el nombre de la tabla.

    El nmero mximo de filas que se almacenan en la tabla (opcional).

    Las opciones disponibles al guardar una traza en un archivo son:

    La ubicacin y el nombre del archivo.

    El tamao mximo del archivo.

    Siga el comportamiento cuando el archivo est lleno (desplcese para iniciar alprincipio del archivo otra vez o crear un nuevo archivo).

    Siga el procesamiento por parte del servidor o del SQL Server Profiler. Configurarel servidor para procesar la traza puede reducir el impacto de la traza en elrendimiento.

    Especificarunahoradedetencindetraza

    Puede decidir establecer una hora de detencin de la traza, lo cual le permite iniciar unatraza y dejar que se ejecute hasta una fecha y hora concretas. La capacidad paraespecificar una pausa es til cuando desee registrar la actividad de SQL Server para un

    perodo predeterminado.

  • 8/2/2019 X13-0738405

    28/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    526 Mdulo 5: Supervisin de SQL Server

    Columnas,eventosycategorasdetraza

    Introduccin La informacin registrada en una traza se divide en categoras. Las categoras contieneneventos, cada uno de los cuales tiene atributos definidos posteriormente por columnas.

    Categorasdetraza En el SQL Server Profiler, una categora es un grupo de clases de eventos relacionadas.Las clases de eventos estn compuestas por tipos de eventos que se pueden seguir pasoa paso. La clase de evento contiene todas las columnas de datos sobre las que un eventopuede realizar informes.

    Las categoras mostradas de forma predeterminada son:

    Security Audit. Incluye las clases de eventos que se usan para auditar la actividad delservidor.

    Sesiones. Incluyen clases de eventos generadas por clientes que se conectan ydesconectan de una instancia de SQL Server.

    Procedimientos almacenados. Incluyen clases de eventos generadas por la ejecucin deprocedimientos almacenados.

    TSQL. Incluyen clases de eventos generadas por la ejecucin de instruccionesTransact-SQL pasadas a una instancia de SQL Server desde el cliente.

    Eventos Un evento se define como la aparicin de una accin dentro de una instancia del Motorde base de datos de SQL Server. Los eventos se definen adems por sus atributos, que semuestran en columnas de datos.

  • 8/2/2019 X13-0738405

    29/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 527

    Los eventos predeterminados mostrados se describen en la tabla siguiente.

    Nota Para ver todos los eventos, active la casilla de verificacin Todos los eventos dela ficha Seleccin de eventos del cuadro de dilogo Propiedades de traza.

    Paraobtenermsinformacin Para obtener ms informacin acerca de las trazas,

    consulte Referencia de las clases de evento de SQL Server, en los Libros en pantalla deSQL Server 2005.

    Columnas Las columnas de datos contienen los atributos de los eventos. El SQL Server Profiler usalas columnas de datos de la traza para describir eventos que se capturan cuando seejecuta la traza.

    Puede administrar las columnas mediante filtros de columna para controlar qu datosse recopilan. Por ejemplo, use el filtro Nombre de aplicacin para excluir cualquierdato generado por el propio SQL Server Profiler. Tambin puede organizar columnas engrupos relacionados usando la funcin Organizar columnas.

    Nota Para ver todas las columnas, active la casilla de verificacin Todas las columnasde la ficha Seleccin de eventos del cuadro de dilogo Propiedades de traza.

    Categora Evento Descripcin

    Security Audit Audit Login Indica que un usuario hainiciado sesin correctamenteen SQL Server.

    Security Audit Audit Logout Indica que un usuario hacerrado la sesin de SQLServer.

    Sesiones ExistingConnection Indica las propiedades deconexiones de usuarioexistentes cuando se inici latraza. El servidor provoca unevento ExistingConnectionpor cada conexin de usuarioexistente.

    Procedimientosalmacenados

    RPC: completed Indica que una llamada deprocedimiento remoto ha

    finalizado.TSQL SQL:BatchCompleted Indica que el lote de

    Transact-SQL ha finalizado.

    TSQL SQL:BatchStarting Indica que un lote deTransact-SQL se estiniciando.

  • 8/2/2019 X13-0738405

    30/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    528 Mdulo 5: Supervisin de SQL Server

    Demostracin: UsarelSQLServerProfiler

    Introduccin En esta demostracin, aprender a usar el SQL Server Profiler.

    Preparacin Asegrese de que la mquina virtual 5406A-MIA-SQL-05 se est ejecutando y de que hainiciado sesin comoAlumno.

    Si no se ha iniciado ninguna mquina virtual, siga estos pasos:

    1. Cierre todas las dems mquinas virtuales que se estn ejecutando.

    2. Inicie la mquina virtual.

    3. En el cuadro de dilogo Iniciar sesin en Windows, realice el procedimiento deinicio de sesin usando el nombre de usuarioAlumno y la contrasea Pa$$w0rd.

    CrearunanuevatrazaenelSQLServerProfiler

    1. Haga clic en Inicio, seleccione Todos los programas, Microsoft SQL Server 2005 yHerramientas de rendimiento y, a continuacin, haga clic en SQL Server Profiler.

    2. En el SQL Server Profiler, en el menArchivo, haga clic en Nueva traza.

    3. Cuando se le solicite, conctese a MIAMI mediante la autenticacin de Windows.

    4. En el cuadro de dilogo Propiedades de traza, en el cuadro Nombre de traza,escriba Prueba de esfuerzo.

    5. Active la casilla de verificacin Guardar en el archivo y, a continuacin, guarde elarchivo como D:\Democode\Prueba de esfuerzo.trc.

    6. Active la casilla de verificacin Guardar en el tabla y, a continuacin, cuando se lesolicite, conctese al servidor MIAMI usando la autenticacin de Windows.

    7. En el cuadro de dilogo Tabla de destino, seleccione la base de datosAdventureWorks, el propietario dbo, y la tabla Prueba de esfuerzo y,a continuacin, haga clic enAceptar.

    8. En el cuadro de dilogo Propiedades de traza, active la casilla de verificacinHabilitar hora de detencin de traza y, a continuacin, especifique una hora5 minutos despus de la hora actual.

    9. Haga clic en Ejecutar para iniciar la traza.

  • 8/2/2019 X13-0738405

    31/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 529

    CausarestrsenSQLServermedianteconsultas

    1. Inicie SQL Server Management Studio, y conctese a MIAMI mediante laautenticacin de Windows.

    2. En el menArchivo, seleccioneAbrir y, a continuacin, haga clic enArchivo.Explore D:\Democode, seleccione Query1.sql y, a continuacin, haga clic enAbrir. Cuando se le solicite, conctese al servidor MIAMI mediante laautenticacin de Windows.

    3. En el menArchivo, seleccioneAbrir y, a continuacin, haga clic enArchivo.Explore D:\Democode, seleccione Query2.sql y, a continuacin, haga clic enAbrir. Cuando se le solicite, conctese al servidor MIAMI mediante laautenticacin de Windows.

    4. Ejecute cada consulta por turno y, a continuacin, cambie al Analizador deSQL Server.

    5. Cuando la traza haya finalizado, abra el Explorador de Windows y desplcese aD:\Democode. Confirme que se ha creado el archivo Prueba de esfuerzo.trc.

    6. Cierre el Explorador de Windows.

    7. En SQL Server Management Studio, en el Explorador de objetos, expanda Bases

    de datos, expandaAdventureWorks y, a continuacin, expanda Tablas.8. Haga clic con el botn secundario en dbo.Prueba de esfuerzo y, a continuacin,

    haga clic enAbrir tabla.

    9. Confirme que las entradas de la tabla Prueba de esfuerzo son las mismas que lasde la traza Prueba de esfuerzo en el SQL Server Profiler.

    10. Cierre el SQL Server Profiler y, a continuacin, cierre el SQL Server ManagementStudio.

  • 8/2/2019 X13-0738405

    32/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    530 Mdulo 5: Supervisin de SQL Server

    Leccin4: UsarlosdesencadenadoresDDL

    Objetivosdelaleccin Despus de completar esta leccin, los alumnos podrn:

    Definir los desencadenadores DDL.

    Describir la sintaxis usada para crear desencadenadores DDL.

    Describir cmo administrar desencadenadores DDL.

    Crear un desencadenador DLL.

    Introduccin Los desencadenadores del Lenguaje de definicin de datos (DDL) son una nuevacaracterstica en SQL Server 2005. A diferencia de los desencadenadores estndar,

    que slo pueden responder a los cambios en los datos, los desencadenadores DDL sepueden usar para responder a las acciones en objetos en una base de datos. Por ejemplo,un desencadenador DDL puede usarse para auditar operaciones como la creacin osupresin de tablas. Por consiguiente, los desencadenadores de DDL son unaherramienta muy til para supervisar las acciones que tienen lugar en una base de datos.

  • 8/2/2019 X13-0738405

    33/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 531

    QusonlosdesencadenadoresDDL?

    Introduccin Es til poder supervisar operaciones de definicin de datos, como un usuarioque crea o suprime una tabla, al auditar y regular las acciones de base de datos.Los desencadenadores DDL proporcionan una forma de capturar de formatransparente eventos de definicin de datos, para que un usuario que ejecute unainstruccin de lenguaje de definicin de datos no sea consciente de que la tarea esobservada.

    CundousardesencadenadoresDDL

    Un desencadenador DDL se inicia cuando un usuario ejecuta una instruccin delenguaje de definicin de datos especificada, como CREATE TABLE, DROP TRIGGER oUPDATE STATISTICS.

    Los desencadenadores DDL pueden ser tiles para registrar acciones administrativas enel sistema. Por ejemplo, podra crear un desencadenador en la instruccin CREATE

    VIEW para registrar detalles sobre la vista que se cre, el usuario que la cre y la hora enque tuvo lugar la accin.

    mbitodedesencadenadorDDL

    A diferencia de los desencadenadores corrientes que estn asociados a tablas,un desencadenador DDL se ejecuta cuando se ejecuta una instruccin determinada,sin tener en cuenta el destino de esa instruccin. Por ejemplo, un desencadenadorDLL DROP_TABLE se iniciar cuando se anule una tabla.

    Algunos desencadenadores DDL funcionan en el nivel de base de datos y slo se iniciancuando el evento correspondiente tiene lugar en una base de datos concreta. Estosdesencadenadores tienen relacin sobre todo con objetos de una sola base de datos,

    como tablas, ndices, usuarios, procedimientos, vistas, etc. Un ejemplo de undesencadenador DDL que funciona en el mbito de base de datos es CREATE_TABLE.

    Otros desencadenadores DDL funcionan en el nivel de servidor y se inician sin tener encuenta la base de datos que est en uso. Estos desencadenadores estn asociados a objetosen el nivel de servidor, como inicios de sesin y certificados de seguridad. El desencadenadorDLL CREATE_LOGIN es un ejemplo que funciona en el mbito de servidor.

    Paraobtenermsinformacin Para obtener informacin sobre losdesencadenadores DDL que funcionan en el mbito de base de datos y de servidor,

  • 8/2/2019 X13-0738405

    34/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    532 Mdulo 5: Supervisin de SQL Server

    consulte la seccin Utilizar grupos de eventos con desencadenadores DDL en losLibros en pantalla de SQL Server 2005.

    ProcesodesencadenadorDDL

    Los desencadenadores DDL se inician cuando finaliza la accin desencadenadora.Por ejemplo, un desencadenador DROP_TABLE se inicia despus de que la tabla dedestino se haya anulado correctamente. No hay ningn equivalente a los

    desencadenadores INSTEAD OF para las operaciones DDL.Puede usar la instruccin ROLLBACK TRANSACTION para anular la transaccin actual ydeshacer cualquier trabajo que se haya realizado, incluida la operacin DDL que hizoque el desencadenador se iniciara.

    Una sola operacin DDL puede desencadenar varios desencadenadores DDL. El ordenen el que se inician los desencadenadores no se documenta. No debera confiar en quelos desencadenadores DDL se ejecuten siguiendo una secuencia determinada.

  • 8/2/2019 X13-0738405

    35/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 533

    CmocreardesencadenadoresDDL

    Introduccin Puede crear desencadenadores DDL mediante la instruccin CREATE TRIGGER.Adems, puede usar algunas nuevas extensiones de sintaxis que se han agregado aSQL Server 2005.

    LainstruccinCREATETRIGGER

    Al crear un desencadenador DDL, debe especificar el mbito y el tipo de operacin DDL.El ejemplo siguiente crea un desencadenador que se inicia en el momento en el que unusuario ejecuta el comando UPDATE STATISTICS en la base de datos actual:

    CREATE TRIGGER UpdStats

    ON DATABASE

    FOR UPDATE_STATISTICSAS

    ...

    Nota Tambin puede especificar el evento DDL_DATABASE_LEVEL_EVENTS pararesponder a cualquier operacin DDL en una base de datos.

    Indique el mbito de un desencadenador mediante la clusula ON DATABASE omediante la clusula ON ALL SERVER en la definicin del desencadenador.

    El cuerpo de un desencadenador DDL puede contener instrucciones Transact-SQL opuede hacer referencia a un mtodo en un ensamblado de Microsoft .NET.

    Lafuncineventdata Los desencadenadores de Lenguaje de manipulacin de datos estndar (DML) crean lastablas insertadas y eliminadas, permitiendo que el desarrollador examine los datos quese estn cambiando y los nuevos valores que los modifican. Los desencadenadores DDLno crean estas tablas. En su lugar, puede usar la funcin eventdata para obtenerinformacin sobre los eventos que inician el desencadenador.

  • 8/2/2019 X13-0738405

    36/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    534 Mdulo 5: Supervisin de SQL Server

    La funcin eventdata devuelve un documento XML EVENT_INSTANCE cuyo contenidovara segn el destino del desencadenador DDL. Todos los desencadenadores DDLdevuelven un documento que incluye los elementos siguientes:

    . El momento en el que se inici el desencadenador.

    . El Id. del proceso de base de datos que activa el desencadenador.

    . El tipo de evento que activ el desencadenador, como CREATE_TABLE oUPDATE_STATISTICS

    El resto del documento XML contiene informacin que depende del comando queactiva el desencadenador. Por ejemplo, un desencadenador DDL devolvi el documentosiguiente mediante la activacin del comando UPDATE STATISTICS:

    2004-06-18T02:14:20.640

    58

    UPDATE_STATISTICS

    SQL2005PC

    SQL2005PC\Administrator

    SQL2005PC\Administrator

    AdventureWorks

    Production

    STATISTICS

    Product

    TABLE

    UPDATE STATISTICS Production.Product

    Paraobtenermsinformacin Para una descripcin detallada del documento

    devuelto por la funcin eventdata, consulte la referencia de Transact-SQL en los Librosen pantalla de SQL Server 2005.

    Extraerinformacindeevento

    Use la funcionalidad XQuery del tipo de datos xml para extraer la informacin deevento que devolvi el documento con la funcin eventdata. Por ejemplo, la muestra decdigo siguiente recupera los elementos PostTime, Database y TargetObjecten undesencadenador DDL UPDATE_STATISTICS y los muestra:

    CREATE TRIGGER UpdStatsON DATABASEFOR UPDATE_STATISTICSASDECLARE @data xmlDECLARE @posttime nvarchar(24)DECLARE @database nvarchar(100)DECLARE @targetobject nvarchar(100)SET @data = eventdata()SET @posttime = @data.value('(/EVENT_INSTANCE/PostTime)[1]',

    'nvarchar(24)')SET @database = @data.value('(/EVENT_INSTANCE/DatabaseName)[1]',

    'nvarchar(100)')SET @targetobject =

    @data.value('(/EVENT_INSTANCE/TargetObjectName/text())[1]','nvarchar(100)')

    PRINT @posttimePRINT @databasePRINT @targetobject

  • 8/2/2019 X13-0738405

    37/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 535

    CmoadministrardesencadenadoresDDL

    Introduccin SQL Server 2005 ha ampliado la sintaxis de los comandos usados para administrardesencadenadores con extensiones especficas para desencadenadores DDL.

    Verlosdesencadenadores

    Puede obtener una lista de los desencadenadores disponibles de una base de datos,incluidos los desencadenadores DDL, mediante la consulta de la vista de catlogosys.triggers, como se muestra en el ejemplo de cdigo siguiente:

    SELECT name

    FROM sys.triggers

    Puede recuperar la definicin de un desencadenador mediante la consulta de la vista decatlogo sys.sql_modules, como se muestra en el siguiente ejemplo de cdigo:

    SELECT definition

    FROM sys.sql_modules

    WHERE [object_id] =

    (SELECT [object_id]

    FROM sys.triggers

    WHERE name='trigger_name')

    Alternativamente, puede ver desencadenadores de base de datos mediante elExplorador de objetos en SQL Server Management Studio.

    Modificarundesencadenador

    Use el comando ALTER TRIGGER para cambiar la definicin de un desencadenadorDDL. La sintaxis para cambiar un desencadenador DDL es muy parecida a la correccinde un desencadenador estndar. Puede:

    Cambiar el evento desencadenador.

    Cifrar el desencadenador.

    Modificar las instrucciones Transact-SQL que constituyen el cuerpo deldesencadenador.

  • 8/2/2019 X13-0738405

    38/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    536 Mdulo 5: Supervisin de SQL Server

    Eliminarundesencadenador

    Use el comando DROP TRIGGER para quitar un desencadenador. Por ejemplo:

    DROP TRIGGER UpdStats

    ON DATABASE

    Importante Cuando se modifica o se anula un desencadenador, debe especificarse laclusula ON DATABASE u ON ALL SERVER que corresponda al desencadenador. Siomite esta clusula, SQL Server 2005 supondr que est haciendo referencia a undesencadenador estndar y se producir un error porque no podr encontrarlo.

  • 8/2/2019 X13-0738405

    39/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 537

    Demostracin: CrearundesencadenadorDDL

    Introduccin En esta demostracin, ver cmo crear un desencadenador DDL que se dispara cada vezque se realiza una operacin DDL en la base de datos. El desencadenador registrar losdetalles de la operacin en una tabla que acta como pista de auditora.

    Preparacin Asegrese de que la mquina virtual 5406A-MIA-SQL-05 se est ejecutando y de que hainiciado sesin comoAlumno.

    Si no se ha iniciado ninguna mquina virtual, siga estos pasos:

    1. Cierre todas las dems mquinas virtuales que se estn ejecutando.

    2. Inicie la mquina virtual.

    3. En el cuadro de dilogo Iniciar sesin en Windows, realice el procedimiento deinicio de sesin usando el nombre de usuarioAlumno y la contrasea Pa$$w0rd.

    CrearundesencadenadorDDL

    Use el procedimiento siguiente para crear un desencadenador DDL:

    1. Haga clic en Inicio, seleccione Todos los programas y Microsoft SQL Server2005 y, a continuacin, haga clic en SQL Server Management Studio.

    2. En el cuadro de dilogo Conectar al servidor, especifique los valores de la tablasiguiente y haga clic en Conectar.

    3. Si el Explorador de objetos no est visible, en el menVer, haga clic en elExplorador de objetos.

    4. En el menArchivo, seleccioneAbrir y, a continuacin, haga clic enArchivo.

    5. Abra DDLTriggerDemo.sql en la carpeta D:\Democode y cuando se le solicite,conctese a MIAMI mediante el uso de la autenticacin de Windows.

    Propiedad Valor

    Tipo de servidor Motor de base de datosNombre del servidor MIAMI

    Autenticacin Autenticacin de Windows

  • 8/2/2019 X13-0738405

    40/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    538 Mdulo 5: Supervisin de SQL Server

    6. Seleccione el cdigo siguiente en la secuencia de comandos:

    -- cree la tabla de registros

    USE AdventureWorks

    GO

    CREATE TABLE dbo.AuditLog

    (Command NVARCHAR(1000),

    PostTime NVARCHAR(24),HostName NVARCHAR(100),

    LoginName NVARCHAR(100)

    )

    GO

    Este cdigo crea una tabla denominadaAuditLog que se usar para registrareventos de registro capturados por un desencadenador DDL.

    7. En el men Consulta, haga clic en Ejecutar.

    8. Compruebe que el comando se ejecuta correctamente.

    9. Seleccione las instrucciones siguientes de la secuencia de comandos:

    -- cree desencadenador DDL

    CREATE TRIGGER AuditOperations

    ON DATABASE

    FOR DDL_DATABASE_LEVEL_EVENTS

    AS

    DECLARE @data xml

    DECLARE @cmd nvarchar(1000)

    DECLARE @posttime nvarchar(24)

    DECLARE @spid nvarchar(6)

    DECLARE @loginname nvarchar(100)

    DECLARE @hostname nvarchar(100)

    SET @data = eventdata()

    SET @cmd = @data.value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]',

    'nvarchar(1000)')

    SET @posttime = @data.value('(/EVENT_INSTANCE/PostTime)[1]',

    'nvarchar(24)')

    SET @spid = @data.value('(/EVENT_INSTANCE/SPID)[1]', 'nvarchar(6)')

    SET @loginname = @data.value('(/EVENT_INSTANCE/LoginName)[1]',

    'nvarchar(100)')

    SET @hostname = HOST_NAME()

    INSERT INTO dbo.AuditLog(Command,PostTime,HostName,LoginName)

    VALUES(@cmd, @posttime, @hostname, @loginname)

    SELECT @data

    GO

    Este cdigo crea un desencadenador DDL que registra todas las ejecuciones deinstrucciones en el nivel de base de datos.

    10. En el men Consulta, haga clic en Ejecutar para crear el desencadenador.

    11. Seleccione y ejecute los comandos siguientes en la secuencia de comandos.Este cdigo realiza algunas operaciones DDL en la base de datos:

    -- realice operaciones DDL

    UPDATE STATISTICS Production.Product

    GO

    CREATE TABLE dbo.Test(col INT)

    GO

    DROP TABLE dbo.Test

    GO

  • 8/2/2019 X13-0738405

    41/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 539

    12. Para ver el cdigo XML para cada evento, haga clic en el vnculo en el panel Resultados.

    13. En la ventana TriggerDemo.sql, seleccione y ejecute la instruccin siguiente paramostrar el contenido de la tablaAuditLog.

    -- Vea la tabla de registros

    SELECT *FROM dbo.AuditLog

    GO

    14. Seleccione y ejecute el cdigo siguiente para quitar el desencadenador:

    -- limpieza

    DROP TRIGGER AuditOperations

    ON DATABASE

    DROP TABLE dbo.AuditLog

    GO

    15. Cierre SQL Server Management Studio.

  • 8/2/2019 X13-0738405

    42/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    540 Mdulo 5: Supervisin de SQL Server

    Leccin5: Usarlasnotificacionesdeeventos

    Objetivosdelaleccin Despus de completar esta leccin, los alumnos podrn:

    Definir la notificacin de eventos.

    Describir las consideraciones para crear notificaciones de eventos.

    Describir las consideraciones para procesar notificaciones de eventos.

    Describir las consideraciones para administrar notificaciones de eventos.

    Implementar notificaciones de eventos.

    IntroduccinLas notificaciones de eventos son una nueva caracterstica en SQL Server 2005 queproporcionan un mecanismo muy escalable para supervisar la actividad de SQL Server.Son una herramienta til para registrar la actividad de la base de datos con un impactomnimo sobre el rendimiento de SQL Server.

  • 8/2/2019 X13-0738405

    43/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 541

    Qusonlasnotificacionesdeeventos?

    Introduccin Las notificaciones de eventos, como los desencadenadores, pueden responder a varioseventos de la base de datos. A diferencia de los desencadenadores, que ejecutan elcdigo en el mismo motor de base de datos de SQL Server 2005 como el evento queactiv el desencadenador, las notificaciones de eventos se envan a un servicio medianteService Broker, lo que le permite enviar datos de eventos de varias bases de datos yservidores a un servicio de control de eventos central.

    Notificacionesdeeventos

    Una notificacin de eventos reacciona ante uno o ms eventos en la base de datos yenva un mensaje a un servicio de Service Broker diseado para controlar los eventos.Un evento de base de datos puede ser una operacin DDL en un objeto de base de datos

    o un evento de traza parecido a aqullos que se pueden capturar mediante el SQL ServerProfiler.

    Capturareventos Para capturar y procesar notificaciones de eventos, debe implementar un servicio deService Broker. Un servicio de Service Broker es un procedimiento almacenado o unaaplicacin generada mediante el marco Service Broker que supervisa una cola para losmensajes entrantes. Un servicio de Broker Service se puede escribir usando Transact-SQLo uno de los lenguajes de Common Language Runtime (CLR). Service Broker envamensajes al servicio, y usa una cola para conservar la informacin de mensajes hasta queel servicio est listo para aceptarlos. El servicio tambin puede usar una cola paramantener solicitudes hasta que pueda procesarlas.

    Para simplificar el proceso de creacin de notificaciones de eventos, SQL Server 2005

    incluye un tipo de mensaje predefinido y un contrato para las notificaciones de eventos.Los nicos objetos de Service Broker que necesita crear son una cola, un servicio y unaruta.

  • 8/2/2019 X13-0738405

    44/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    542 Mdulo 5: Supervisin de SQL Server

    Cmocrearnotificacionesdeeventos

    Introduccin Use la instruccin CREATE EVENT NOTIFICATION para crear un nuevo objeto denotificacin de eventos y enviar la informacin del evento a un servicio deprocesamiento de eventos.

    UsarlainstruccinCREATEEVENTNOTIFICATION

    Cuando use la instruccin CREATE EVENT NOTIFICATION, debe:

    Definir la notificacin de eventos con un nombre que sea nico dentro de sumbito.

    Especificar el mbito de la notificacin de eventos. El mbito puede ser SERVER,DATABASE o QUEUE.

    Especificar los eventos que desea capturar. Puede especificar un evento individualo un grupo de eventos que contenga varios eventos relacionados.

    Especifique el servicio de Service Broker al que se debera enviar la informacindel evento. Debe especificar el nombre del servicio y la identificacin de instanciade Service Broker exclusiva que identifica la base de datos en la que se implementael servicio. Para los servicios de la base de datos local, puede usar la cadena literal'current database'.

    Ejemplos El cdigo de Transact-SQL siguiente muestra una instruccin CREATE EVENTNOTIFICATION para una notificacin de eventos denominada CreateLoginEvent.La notificacin de eventos tiene un mbito de servidor y enva informacin al servicioNotifyService en la base de datos actual cada vez que se ejecuta el comando CREATELOGIN:

    CREATE EVENT NOTIFICATION CreateLoginEvent

    ON SERVER

    FOR CREATE_LOGIN

    TO SERVICE 'NotifyService', 'current database'

  • 8/2/2019 X13-0738405

    45/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 543

    El ejemplo siguiente muestra una instruccin CREATE EVENT NOTIFICATION parauna notificacin de eventos denominada TableViewEventcon mbito de base de datosque enva informacin al servicio EvtService cuando se ejecuta cualquier operacinDDL en una tabla, vista, ndice, o estadsticas:

    CREATE EVENT NOTIFICATION TableViewEvent

    ON DATABASE

    FOR DDL_TABLE_VIEW_EVENTS

    TO SERVICE 'EvtService', '8140a771-3c4b-4479-8ac0-81008ab17984'

    Tambin puede usar las notificaciones de eventos para capturar un evento de traza.Por ejemplo, la notificacin de eventos siguiente intercepta el eventoSQL_BatchCompleted. (Los eventos de traza slo se pueden capturar en el nivel deservidor).

    CREATE EVENT NOTIFICATION TraceSQLBatches

    ON SERVER

    FOR SQL_BatchCompleted

    TO SERVICE 'NotifyService', 'current database'

    Paraobtenermsinformacin Para una lista completa de eventos de traza,consulte Utilizar eventos de traza con notificaciones de eventos en los Libros enpantalla de SQL Server 2005.

  • 8/2/2019 X13-0738405

    46/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    544 Mdulo 5: Supervisin de SQL Server

    Cmoprocesarnotificacionesdeeventos

    Introduccin La manera ms simple de crear un servicio de Service Broker para controlar eventosde SQL Server es usar un procedimiento almacenado que se active cuando aparezca unmensaje en una cola, enviado por una notificacin de eventos.

    Puede especificar qu procedimiento almacenado se ejecutar cuando crea la cola.El cdigo siguiente muestra cmo especificar la ejecucin de un procedimientoalmacenado denominado EventProc cuando se recibe un mensaje en la colaNotifyQueue:

    CREATE QUEUE NotifyQueue

    WITH ACTIVATION (PROCEDURE_NAME = dbo.EventProc,

    MAX_QUEUE_READERS = 5,

    EXECUTE AS SELF)

    GO

    Recibirmensajes El procedimiento almacenado de procesamiento de eventos debera recuperar primeroel mensaje de la cola mediante el comando RECEIVE y, a continuacin, almacenar lainformacin en variables. El comando WAITFOR se usa para suspender elprocesamiento hasta que se reciba un mensaje o hasta que hayan pasado dos segundos.Si no se recibe ningn mensaje, no es necesario efectuar ms acciones. En el ejemplosiguiente se muestra cmo recibir mensajes de una cola denominada NotifyQueue:

    DECLARE @messageTypeName NVARCHAR(256),@messageBody XML

    ;WAITFOR(

    RECEIVE TOP(1)

    @messageTypeName = message_type_name,

    @messageBody = message_body

    FROM dbo.NotifyQueue;

    ), TIMEOUT 2000 ;

    IF @@ROWCOUNT = 0

    RETURN

  • 8/2/2019 X13-0738405

    47/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 545

    Procesarmensajes A los mensajes de la cola se les asigna un message_type_name que describe el tipo demensaje. Puede usarlo para identificar si el mensaje es una notificacin de eventos o unmensaje de error de la notificacin de eventos.

    Los mensajes tambin contienen una columna message_bodyque contiene lainformacin real del evento. Esta columna contiene un documento EVENT_INSTANCEXML que incluye los mismos elementos que el documento generado por eldesencadenador DDL. Por ejemplo, una notificacin de eventos de tabla que activa uncomando ALTER TABLE gener el documento siguiente:

    58

    ALTER_TABLE

    SQL2005PC

    SQL2005PC\Administrator

    SQL2005PC\Administrator

    AdventureWorks

    dbo

    T1

    TABLE

    ALTER TABLE T1 ADD col13 int

    Puede usar la funcionalidad XQuery del tipo de datos xml para recuperar lainformacin del evento como se muestra en el ejemplo siguiente:

    DECLARE @cmd nvarchar(1000)

    DECLARE @posttime nvarchar(24)

    DECLARE @spid nvarchar(6)

    DECLARE @loginname nvarchar(100)

    DECLARE @hostname nvarchar(100)

    SET @cmd = @messagebody.value

    ('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]'), 'nvarchar(1000)')

    SET @posttime = @messagebody.value

    ('(/EVENT_INSTANCE/PostTime)[1]', 'nvarchar(24)')

    SET @spid = @messagebody.value

    ('(/EVENT_INSTANCE/SPID)[1]', 'nvarchar(6)')

    SET @loginname = @messagebody.value

    ('(/EVENT_INSTANCE/LoginName)[1]', 'nvarchar(100)')

    SET @hostname = HOST_NAME()

    INSERT INTO AuditLog(Command,PostTime,HostName,LoginName)

    VALUES(@cmd, @posttime, @hostname, @loginname)

    GO

  • 8/2/2019 X13-0738405

    48/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    546 Mdulo 5: Supervisin de SQL Server

    Cmoadministrarnotificacionesdeeventos

    Introduccin SQL Server 2005 proporciona nuevas instrucciones Transact-SQL para administrarnotificaciones de eventos. Estas instrucciones permiten ver, modificar y quitarnotificaciones de eventos.

    Verlasnotificacionesdeeventosycolas

    Puede obtener una lista de notificaciones de eventos mediante la consulta de la vista decatlogo sys.event_notifications:

    SELECT name

    FROM sys.event_notifications

    Puede ver una lista de colas, incluidas las usadas por las notificaciones de eventos,mediante la consulta de la vista de catlogo sys.service_queues:

    SELECT name

    FROM sys.service_queues

    Eliminarunanotificacindeeventos

    Use el comando DROP EVENT NOTIFICATION para eliminar permanentemente unanotificacin de eventos de la base de datos:

    DROP EVENT NOTIFICATION UpdateStats

    ON SERVER

    Paraobtenermsinformacin Para obtener ms informacin acerca del comandoDROP EVENT NOTIFICATION, consulte la referencia de Transact-SQL en los Libros enpantalla de SQL Server.

    Nota Las notificaciones de eventos dependen de la funcionalidad Service Broker deSQL Server 2005. Para usar las notificaciones de eventos, debe habilitar Service Brokermediante la habilitacin de la configuracin ENABLE_BROKER para la base de datos enla que se encuentra su cdigo de notificacin de eventos.

  • 8/2/2019 X13-0738405

    49/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 547

    Demostracin: Implementarnotificacionesdeeventos

    Introduccin En esta demostracin, ver cmo crear una cola, un servicio y una notificacin deeventos para interceptar eventos DDL en la base de datosAdventureWorks.Finalmente, invocar la notificacin de eventos y examinar los datos registrados.

    Preparacin Asegrese de que la mquina virtual 5406A-MIA-SQL-05 se est ejecutando y de que hainiciado sesin comoAlumno.

    Si no se ha iniciado ninguna mquina virtual, siga estos pasos:

    1. Cierre todas las dems mquinas virtuales que se estn ejecutando.

    2. Inicie la mquina virtual.

    3. En el cuadro de dilogo Iniciar sesin en Windows, realice el procedimiento deinicio de sesin usando el nombre de usuarioAlumno y la contrasea Pa$$w0rd.

    Crearlosobjetosdeservicio

    1. Haga clic en Inicio, seleccione Todos los programas y Microsoft SQL Server2005 y, a continuacin, haga clic en SQL Server Management Studio.

    2. En el cuadro de dilogo Conectar al servidor, especifique los detalles mostradosen la tabla siguiente y haga clic en Conectar.

    3. En el menArchivo, seleccioneAbrir y, a continuacin, haga clic enArchivo.

    4. Abra EventDemo.sqlen la carpeta D:\Democodey cuando se le solicite, conctesea MIAMI mediante el uso de la autenticacin de Windows.

    Elemento de interfaz de usuario Valor

    Tipo de servidor Motor de base de datos

    Nombre del servidor MIAMI

    Autenticacin Autenticacin de Windows

  • 8/2/2019 X13-0738405

    50/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    548 Mdulo 5: Supervisin de SQL Server

    5. Seleccione el cdigo siguiente en la secuencia de comandos:

    -- habilite Service Broker

    USE AdventureWorks

    ALTER DATABASE AdventureWorks SET ENABLE_BROKER;

    -- anule y cree la tabla EventLog

    IF exists (select * from dbo.sysobjects where id =

    object_id(N'dbo.EventLog') and OBJECTPROPERTY(id, N'IsTable') = 1)DROP TABLE dbo.EventLog

    GO

    CREATE TABLE EventLog

    (Command NVARCHAR(1000),

    PostTime NVARCHAR(24),

    HostName NVARCHAR(100),

    LoginName NVARCHAR(100)

    )

    GO

    Este cdigo habilita Service Broker y tambin crea una tabla denominadaEventLog que se usar para registrar eventos capturados.

    6. En el men Consulta, haga clic en Ejecutar.

    7. Compruebe que el comando se ejecuta correctamente.

    8. Seleccione las instrucciones siguientes de la secuencia de comandos.

    -- cree una colaCREATE QUEUE NotifyQueueGO

    -- cree un servicio de procesamiento de eventosCREATE SERVICE NotifyServiceON QUEUE NotifyQueue([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification])GO

    -- cree una rutaCREATE ROUTE NotifyRouteWITH SERVICE_NAME = 'NotifyService',ADDRESS = 'LOCAL'GO

    Este cdigo crea una cola, un servicio y una ruta.

    9. En el men Consulta, haga clic en Ejecutar para crear los objetos.

    Crearyprobarlasnotificacionesdeeventos

    1. Seleccione las instrucciones siguientes de la secuencia de comandos:

    --cree las notificaciones de eventos de la base de datosCREATE EVENT NOTIFICATION NotifyCREATE_TABLEON DATABASE

    FOR CREATE_TABLETO SERVICE 'NotifyService', 'current database'GO

    CREATE EVENT NOTIFICATION NotifyALTER_TABLEON DATABASEFOR ALTER_TABLETO SERVICE 'NotifyService', 'current database'GO

  • 8/2/2019 X13-0738405

    51/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 549

    Este cdigo crea notificaciones de eventos que se activan cuando las operacionesCREATE TABLE y ALTER TABLE se realizan en la base de datosAdventureWorks.

    2. En el men Consulta, haga clic en Ejecutar para crear las notificaciones.

    3. Seleccione y ejecute el comando siguiente en la secuencia de comandos:

    --cree una tabla

    CREATE TABLE T1 (col1 int)

    GO

    Este cdigo crea una tabla en la base de datosAdventureWorks.

    4. Seleccione y ejecute la instruccin siguiente para procesar el mensaje y mostrar elcontenido de la tabla EventLog:

    --procese las notificaciones de eventos

    DECLARE @messageTypeName nvarchar(256),

    @messageBody xml

    ;RECEIVE TOP(1)

    @messageTypeName = message_type_name,

    @messageBody = message_bodyFROM dbo.NotifyQueue;

    IF @@ROWCOUNT = 0

    RETURN

    PRINT CONVERT(nvarchar(1000),@messagebody)

    DECLARE @cmd nvarchar(1000)

    DECLARE @posttime nvarchar(24)

    DECLARE @spid nvarchar(6)

    DECLARE @hostname nvarchar(100)

    DECLARE @loginname nvarchar(100)

    SET @cmd = @messagebody.value

    ('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]',

    'nvarchar(1000)')SET @posttime = @messagebody.value

    ('(/EVENT_INSTANCE/PostTime)[1]', 'nvarchar(24)')

    SET @spid = @messagebody.value

    ('(/EVENT_INSTANCE/SPID)[1]', 'nvarchar(6)')

    SET @loginname = @messagebody.value

    ('(/EVENT_INSTANCE/LoginName)[1]', 'nvarchar(100)')

    SET @hostname = HOST_NAME()

    INSERT INTO EventLog(Command,PostTime,HostName,LoginName)

    VALUES(@cmd, @posttime, @hostname, @loginname)

    GO

    SELECT * FROM EventLog

    Debera ver una fila en la tabla EventLog que describe el evento CREATE TABLE

    que ha tenido lugar.

    5. Seleccione y ejecute los comandos siguientes en la secuencia de comandos:

    --modifique la tabla

    ALTER TABLE T1 ADD col2 int

    GO

    Este cdigo agrega una columna a la tabla T1.

  • 8/2/2019 X13-0738405

    52/62U

    SOEXCLUSIVODEINSTRUCTOR

    ESMCT.PROHIBIDOELUSOPO

    RALUMNOS

    550 Mdulo 5: Supervisin de SQL Server

    6. Seleccione y ejecute la instruccin siguiente para procesar el mensaje y mostrar elcontenido de la tabla EventLog:

    --procese las notificaciones de eventos

    DECLARE @messageTypeName nvarchar(256),

    @messageBody xml

    ;RECEIVE TOP(1)

    @messageTypeName = message_type_name,@messageBody = message_body

    FROM dbo.NotifyQueue;

    IF @@ROWCOUNT = 0

    RETURN

    PRINT CONVERT(nvarchar(1000),@messagebody)

    DECLARE @cmd nvarchar(1000)

    DECLARE @posttime nvarchar(24)

    DECLARE @spid nvarchar(6)

    DECLARE @hostname nvarchar(100)

    DECLARE @loginname nvarchar(100)

    SET @cmd = @messagebody.value

    ('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]',

    'nvarchar(1000)')

    SET @posttime = @messagebody.value

    ('(/EVENT_INSTANCE/PostTime)[1]', 'nvarchar(24)')

    SET @spid = @messagebody.value

    ('(/EVENT_INSTANCE/SPID)[1]', 'nvarchar(6)')

    SET @loginname = @messagebody.value

    ('(/EVENT_INSTANCE/LoginName)[1]', 'nvarchar(100)')

    SET @hostname = HOST_NAME()

    INSERT INTO EventLog(Command,PostTime,HostName,LoginName)

    VALUES(@cmd, @posttime, @hostname, @loginname)

    GO

    SELECT * FROM EventLog

    Debera ver una fila nueva en la tabla EventLog que describe el evento ALTERTABLE que ha tenido lugar.

    7. Seleccione y ejecute el cdigo siguiente para quitar los objetos que cre:

    --limpieza

    DROP EVENT NOTIFICATION NotifyCREATE_TABLE ON DATABASE

    DROP EVENT NOTIFICATION NotifyALTER_TABLE ON DATABASE

    DROP ROUTE NotifyRoute

    DROP SERVICE NotifyService

    DROP QUEUE NotifyQueue

    DROP TABLE T1

    DROP TABLE EventLog

    8. Cierre SQL Server Management Studio.

  • 8/2/2019 X13-0738405

    53/62

    USOEXCLUSIVODEINSTRU

    CTORESMCT.PROHIBIDOELUSOPORALUMNOS

    Mdulo 5: Supervisin de SQL Server 551

    Prctica: SupervisindeSQLServer

    Escenario El administrador de bases de datos senior en Adventure Works le ha pedido quesupervise el SQL Server MIAMI para crear un conjunto de lneas de base de mtricas decontadores de rendimiento que puedan establecer una correlacin con consultasejecutadas frecuentemente en la base de datosAdventureWorks.

    Dos archivos de proceso por lotes para generar actividad que representa patrones deuso comn en la base de datosAdventureWorks se han proporcionado en la carpetaD:\Labfiles\Starter. Debe ejecutar simultneamente estos dos archivos de proceso porlotes mientras registra el rendimiento y la actividad de SQL Server.

    Debe registrar los contadores de rendimiento mostrados en la tabla siguiente medianteel Monitor de sistema.

    Objeto Contador Instancia

    Memoria P