1. Introducción
SQL Server Profiler es una herramienta que se instala junto a SQL Server Management Studio (SSMS) que sirve para registrar y capturar datos de eventos y procesos de Analysis Services, como el inicio de una transacción.
Permite al usuario monitorizar actividad de la base de datos y del servidor como por ejemplo consultas de los usuarios o actividad de login y guardar estos datos en una tabla SQL o un archivo para analizarlo posteriormente. También permite replicar los eventos capturados en la misma u otra instancia de Analysis Services en tiempo real o paso a paso.
SQL Server Profiler sirve para:
· Monitorizar el rendimiento de una instancia de Analysis Services.
· Debuggear consultas.
· Identificar consultas lentas.
· Probar consultas en el desarrollo de un proyecto yendo paso a paso para comprobar que el código funciona de manera esperada.
· Identificar problemas al capturar eventos de un sistema de producción y replicarlos en un sistema de test, para no interrumpir el uso de los sistemas de producción a los usuarios.
· Mostrar datos de los eventos capturados en pantalla y/o guardarlos en un archivo o tabla SQL para una revisión posterior.
Cuando se menciona ‘Analysis Services’ en este documento en particular se centrará la atención en Power BI Premium. Para Power BI Premium solo pueden registrarse los eventos de base de datos y no eventos del servidor.
SQL Server Profiler se instala junto a SQL Server Management Studio. Puede instalarse SQL Server Management Studio desde la página oficial de Microsoft en el siguiente enlace:
2. Conexión a Power BI Premium
Para abrir SQL Server Profiler podemos hacerlo directamente buscando en el menú de inicio o bien abrirlo desde SQL Server Management Studio.
Una vez dentro, hacemos click en File -> New Trace
Y nos abrirá el siguiente cuadro de diálogo:
Si es la primera vez que abrimos SQL Server Profiler es posible que este diálogo aparezca al iniciarse.
Para conectar a Power BI Premium, en Server type debemos elegir Analysis Services en el desplegable
Para rellenar el Server name, debemos ir al Workspace de Power BI Premium y hacer click en Configuración:
En el menú que aparece, navegamos a Premium y copiamos el contenido de ‘Conexión del área de trabajo’:
Esta cadena de conexión se introduce en SQL Server Profiler en ‘Server name’.
En Authentication elegimos el método de autenticación. En este caso, elegimos Azure Active Directory – Password y rellenamos las credenciales.
Antes de darle a Connect, hacemos click en Options >>>
En el apartado de Connect properties, hacemos click en <Browse server…>
SQL Server Profiler se conectará al servidor para ver las bases de datos disponibles. Es conveniente hacerlo en este paso para evitar errores más adelante. Hacemos click en Yes y esperamos a que aparezcan los Datasets de nuestro Workspace; tardará más o menos en función de la conexión y del número de Datasets del Workspace.
Elegimos el Dataset que queramos y hacemos click en OK:
Una vez hecho esto, podemos darle a Connect:
3. Configuración de la traza
Una vez hecha la conexión, podemos configurar la traza. En el apartado General vemos:
Una vez hecha la conexión, podemos configurar la traza. En el apartado General vemos:
· Trace name: Nombre de la traza. Podemos proporcionar un nombre representativo a la traza.
· Trace provider name: La cadena de conexión a Power BI Premium del apartado anterior.
· Trace provider type: La instancia y la versión de Analysis Services.
· Use the template: Las opciones son Blank/Standard/Replay. Esto hace referencia a la pestaña de Events Selection.
· Save to file: El archivo en el que se desea guardar la traza. Se le proporciona nombre y directorio, además de tamaño máximo y dos opciones adicionales. No es necesario guardar la traza en un archivo y puede guardarse posteriormente. Al hacer click se abre el explorador de archivos.
· Save to table: La tabla en la que se desea guardar la traza. Puede configurarse el número máximo de filas de la tabla. Al hacer click se abre el diálogo de conexión para conectar a una base de datos.
· Enable trace stop time: Cuándo se desea parar la traza. Puede definirse la duración o bien definir la fecha y hora a la que se desea detener.
En el apartado de Events Selection podemos elegir los eventos que queremos capturar en nuestra traza:
Cada evento aparece como una fila, y de cada evento pueden seleccionarse diferentes columnas o propiedades del evento que aportarán información sobre el evento en particular. Si situamos el ratón en una celda, por ejemplo, la celda de la fila ‘Command Begin’ y de la columna ‘Event Subclass’, vemos en el apartado inferior información sobre el evento y la propiedad:
De esta manera, obtenemos información sobre qué significa cada evento o propiedad y podemos ajustar la selección a los objetivos.
En Column Filters podemos filtrar las columnas para ajustar la traza:
Estos filtros son útiles para acotar los eventos que registramos si estamos interesados en alguna incidencia o proceso concreto. Por ejemplo, si estamos interesados en ver qué evento está durando más de la cuenta, podemos añadir un filtro de CPUTime:
En Organize Columns se puede cambiar el orden de las columnas e incluso elegir alguna columna por la que agrupar los resultados:
Para elementos con mucha actividad o trazas que se planeen dejar mucho tiempo es recomendable no activar demasiados eventos y/o columnas.
4. Caso de Uso
Como caso de uso, vamos a añadir los siguientes eventos:
· Errors and Warnings -> Errors
· M Data Provider Events -> Execute Source Query
· Queries Events -> Query Begin y Query End
· Query Processing -> DAX Query Plan
En particular estamos interesados en los Queries Events ya que nos dan información de cuando empieza una consulta, cuándo termina y las columnas nos proporcionan información de cuánto dura la query.
Hacemos click en Run y ya tenemos la traza activa:
Ahora, en cada actividad que hagamos en el informe que consulte el Dataset, veremos un evento en esta pantalla.
Abriendo una página del informe, seleccionando elementos, filtrando, ordenando… se van generando eventos:
Podemos ver en las columnas la duración u otros datos que nos interesen.
Las queries de DAX que aparecen aquí se corresponden con las queries que veríamos en el Performance Analyzer (Analizador de Rendimiento) de Power BI Desktop.
De esta manera, SQL Server Profiler nos permite analizar el tipo de queries DAX que se lanzan, su rendimiento, duración, errores… en un workspace de Power BI Premium en producción para comprobar que los resultados son los esperados contrastando con el desarrollo en Power BI Desktop.
Finalmente, le podemos dar a File -> Save as… -> Trace file para guardar los eventos que hemos registrados. Posteriormente podremos abrirlo para analizarlo o replicarlo.
5. Conclusiones
Normalmente para Power BI Desktop existen varias herramientas externas que aportan mucho valor y facilidades al desarrollo. Cuando se trata del servicio de Power BI el catálogo de herramientas es muy reducido pero SQL Server Profiler llena ese vacío al poder conectar a Power BI Premium.
La lista de eventos que puede registrar SQL Server Profiler es bastante extensa y proporciona mucha información, además la interfaz de usuario es sencilla de manejar y el poder guardar y replicar los eventos registrados da mucha potencia a la hora de identificar y depurar errores.
Más info publicada sobre PowerBI: