Daniel Calbimonte

¿Es este el fin de SQL Profiler?

October 2, 2016 by

Introducción

SQL Server Profiler es aún una herramienta usada para monitorear nuestras bases de datos relacionales y multidimensionales. Los usamos para propósitos de desempeño y seguridad. De todas maneras, en SQL Server 2016 se anunció que SQL Profiler será deprecado en futuras versiones.


Figura 0. La tumba de SQL Profiler

¿Por qué se va a reemplazar a SQL Server Profiler?

El problema con SQL Server Profiler es que recolecta demasiado información y toma mucho tiempo para filtrar los datos que realmente necesitamos. Profiler también consume muchos recursos.

Si SQL Profiler será removido, ¿qué lo reemplazará?

La respuesta es Eventos Extendidos.

Una nueva esperanza: Los Eventos Extendidos (XE)

XE reemplazará SQL Profiler en futuras versiones. Por el momento, SQL Server incluye Profiler y XE.

Los XEs son una característica incluida en SQL Server 2008. Es una opción más ligera que consume menos recursos que Profiler. También puede monitorear más eventos que Profiler. Por ejemplo, usted puede monitorear eventos Azure, Column Store, InMemory OLTP, AlwaysOn. De hecho, Profiler no está añadiendo nuevos eventos desde SQL 2008. Todas las nuevas características están disponibles para ser monitoreadas sólo en XE y no en Profiler.

En SQL Server 2008, era sólo posible crear eventos XE usando T-SQL. Era una opción poco amigable que a nadie le gustaba. En las nuevas versiones de SQL, usted puede fácilmente crear su XE usando SQL Server Management Studio en la Interfaz de Usuario.

En esta demostración, crearemos un XE para detectar la base de datos creada.

Requerimientos

  • SQL Server 2014 instalado.

Iniciando

Primero crearemos el XE y luego crearemos la base de datos para verificar que el evento fue almacenado y detectado.

  1. En SQL Server Management Studio (SSMS), vaya a Management>Extended Events:


    Figura 1. SSMS, Extended Events

  2. Expanda la vista de árbol de Extended Events:


    Figura 2. La lista de Sesiones de Evento

  3. Haga clic derecho en Sessions y seleccione New Session Wizard (usted podría crear sus eventos usando la opción New Session, pero el asistente es siempre una buena opción para principiantes):


    Figura 3. New Session Wizard

  4. El asistente nos ayudará a crear los eventos para el análisis de afinación, solución de problemas y desempeño:


    Figura 4. Introducción al asistente de Sesiones

  5. En Set Session Properties, especifique un nombre para la sesión. Usted también puede establecer la opción para iniciar la sesión al inicio del servidor:


    Figura 5. El nombre de la sesión

  6. Hay una opción para usar plantillas existentes. Las plantillas incluyen bloqueos, muestras de lotes, estadísticas de consultas e información acerca de la conexión y la actividad IO del Archivo de registro:


    Figura 6. Las plantillas de sesión de eventos disponibles

  7. En este ejemplo, seleccione la opción Do not use a template y presione Next:


    Figura 7. La opción para plantillas

  8. Una buena característica en XE que Profiler no tiene es la opción Search Event. Usted puede fácilmente buscar sus eventos aquí. En Select Events to Capture, usted puede seleccionar los eventos a capturar. Usted tiene más eventos que Profiler aquí. Por ejemplo, hay eventos Azure y ColumnStore. En este ejemplo seleccione la opción database_created. Esta opción generará un evento si una base de datos SQL Server es creada:


    Figura 8. La lista de XE que usted puede monitorear

  9. Los campos globales contienen los campos a ser incluidos cuando monitoreemos las actividades. Usted puede almacenar el nombre de aplicación usado, el id de la CPU, la base de datos, el nombre de usuario, el nodo NUMA, etc. En este ejemplo, recolectaremos el nombre del cliente, el nombre de la Base de Datos y el nombre del usuario de Windows:


    Figura 9. Campos globales

  10. Usted puede crear filtros para sus eventos usando ‘y’, ‘o’ con diferentes operadores. En este ejemplo especificamos que el nombre de usuario de SQL Server debería ser diferente que Rajesh:


    Figura 10. Los filtros XE usados

  11. El almacenamiento de sesiones le permite almacenar los eventos en un archivo. Hay 2 opciones aquí. Una opción es almacenar una gran cantidad de datos en la otra es almacenar sólo los datos más recientes. La gran cantidad de datos es usada cuando usted selecciona grabar los datos a un archivo para un análisis posterior. La otra opción es almacenar la información en el búfer de la memoria. La segunda opción es usada para almacenar sólo los daros más recientes. Usted puede definir el tamaño y el número de archivos o eventos a almacenar:


    Figura 11. Opciones de almacenamiento

  12. El resumen mostrará todas las opciones establecidas::


    Figura 12. Resumen de las opciones establecidas en el asistente

  13. La ventana final del asistente muestra el mensaje de éxito. Hay una opción para iniciar la sesión inmediatamente y ver los datos cuando son capturados. Seleccione estas opciones::


    Figura 13. Mensaje de éxito de XE

  14. Para generar un evento, crearemos una base de datos. Ejecute una nueva consulta:


    Figura 14. Creando una nueva consulta

  15. Ejecute la siguiente consulta para crear una base de datos. Este evento activará nuestro evento recién creado:

    CREATE DATABASE testDB1


    Figura 15. La consulta T-SQL para crear una nueva base de datos

  16. Haga clic derecho en la nueva sesión creada y seleccione Watch Live Data:


    Figura 16. Ver los datos

  17. Usted podrá ver el nombre del Evento y la fecha y tiempo cuando ocurrió:


    Figura 17. Evento de creación de base de datos

  18. Usted puede también ver el nombre usado de la aplicación cliente (SSMS), el nombre de la base de datos y el Usuario Windows. Estos son los campos seleccionados en la figura 9:


    Figura 18. Los campos mostrados

  19. Si usted desea almacenar la sesión como una plantilla (como solíamos hacer en Profiler), usted puede hacerlo con un clic derecho en la sesión y seleccionando la opción Export Session:


    Figura 19. Exportando como una plantilla

  20. Usted puede exportar la sesión como un archivo XML:


    Figura 20. El archivo xml de la plantilla

  21. Eso es todo. Creamos un XE y pudimos recolectar la información de la Base de Datos creada.

Conclusiones

Los Eventos Extendidos reemplazarán a SQL Server Profiler. Ellos consumen menos recursos porque están optimizados. SQl Profiler almacena demasiada información y es difícil de encontrar lo que necesitamos. XEs son más fáciles de usar y no generan tanta información como SQL Server Profiler. Los XEs también contienen más información y eventos que Profiler.

Referencias

Para más información, consulte estos enlaces:

Imágenes


Daniel Calbimonte
168 Views