lunes, 17 de febrero de 2014

SQL Server: Control de transacciones con SQL Profiler

En el artículo de hoy explicaremos cómo controlar y monitorizar la actividad de las transacciones en una base de datos a través de la herramienta SQL Profiler; esto nos puede ser útil para ver el tiempo que tarda la transacción, qué instrucciones se están ejecutando en ella, transacciones anidadas... Los pasos a realizar serán los siguientes:

  • Dentro de herramientas de rendimiento de SQL Server encontramos SQL Profiler, lo abrimos y creamos un nuevo seguimiento (o traza). Por defecto aparece la siguiente pantalla donde podemos indicar el nombre y la plantilla que usaremos (la standard es la predeterminada).

    Transacciones en SQLProfiler, nueva traza

  • Pulsamos en la pestaña “Selección de eventos” y marcamos el check “Mostrar todos los eventos” para ver los eventos disponibles. Marcamos también la opción “Mostrar todas las columnas” ya que las columnas disponibles cambian según los eventos seleccionados (cada uno contiene las suyas, algunas comunes a varios eventos).

    Transacciones en SQLProfiler, selección de eventos

    En este artículo no entraremos en detalle pero podemos ejecutar filtros por columnas para filtrar la traza por base de datos, aplicación, usuario SQL,... En el siguiente enlace podemos encontrar más información sobre SQL Profiler.

  • Vamos desmarcando todos los eventos y mantenemos marcadas todas las columnas de los siguientes eventos:

    1. Del grupo "Stored Procedures" el evento "RPC:Completed" que se dispara cuando se completa una llamada a un procedimiento remoto (por ejemplo, un stored pocedure). En el siguiente enlace podéis encontrar más información sobre el evento RPC:Completed.

    2. Del grupo "TSQL" el evento "SQL:BatchCompleted" que se dispara cuando se completa un lote de Transact-SQL. En el siguiente enlace podéis encontrar más información sobre el evento SQL:BatchCompleted.

    3. Del grupo "Transactions" (que son los eventos relacionados con las transacciones) los eventos "TM: Begin Tran completed", "TM: Commit Tran completed" y "TM: Rollback Tran completed" que se disparan cuando se completa el inicio, commit o rollback de una transacción. En los siguientes enlaces podéis encontrar más nformación sobre los eventos TM: Begin Tran completed, TM: Commit Tran completed y TM: Rollback Tran completed.

    Transacciones en SQLProfiler, eventos seleccionados

  • Una vez seleccionados los eventos y columnas necesarias pulsamos sobre el botón “Ejecutar” para iniciar el seguimiento sobre las transacciones. En este momento es importante destacar que debe llevarse precaución con en el uso de SQL Profiler en entornos de producción ya que puede afectar al rendimiento.

  • Veamos un ejemplo, dentro de SSMS abrimos una nueva consulta y lanzamos las siguientes instrucciones:

    -- Insertamos una fila fuera de una transacción
    INSERT INTO [Address]         
        ([Address]
        ,[City]
        ,[PostalCode])
         VALUES
        ('Paseo de Gracia 25'
        ,'Barcelona'
        ,'08007')
    GO
    
    -- Iniciamos una transacción
    BEGIN TRANSACTION
    GO
    
    -- Insertamos una fila dentro de una transacción
    INSERT INTO [Address]         
        ([Address]
        ,[City]
        ,[PostalCode])
         VALUES
        ('Paseo de Gracia 27'
        ,'Barcelona'
        ,'08007')
    GO
    
    -- Obtenemos valor asignado a la columna identity 
    SELECT IDENT_CURRENT('[Address]')
    GO
    
    -- Hacemos rollback de la  transacción
    ROLLBACK TRANSACTION
    GO
    

  • Observemos la traza resultado de las instrucciones anteriores. En la columna "TextData" podemos ver la instrucción ejecutada y por tanto cuáles están dentro de la transacción, número de "Reads", "Writes", tiempo de "CPU", "Duration"...

    Transacciones en SQLProfiler, traza ejecutada

  • En este punto supongamos que ya hemos analizado el seguimiento pero nos gustaría guardar la selección de eventos que hemos realizado anteriormente por si tenemos la necesidad más adelante de analizar nuevas transacciones. Iremos al menú "Archivo", opción "Guardar como" y seleccionaremos "Plantilla de seguimiento".

    Transacciones en SQLProfiler, guardar plantilla

    Introducimos el nombre de la plantilla (por ejemplo "TemplateTX"), aceptamos y queda guardada. Para próximas ocasiones que queremos hacer un seguimiento sobre transacciones en lugar de usar la plantilla "Standard" (la predeterminada) podremos seleccionar la plantilla que acabamos de guardar.

    Transacciones en SQLProfiler, nombre plantilla

Y hasta aquí el artículo de hoy, espero que lo utilicéis si queréis monitorizar transacciones con SQLProfiler; recordad que dentro de areaTIC podéis encontrar otros artículos interesantes, no dudéis en consultar nuestro archivo, también podéis seguirnos por RSS o las principales redes sociales (twitter, facebook, linkedin...).


LECTURAS RELACIONADAS RECOMENDADAS POR AREATIC.NET

No hay comentarios:

Publicar un comentario