Finalmente, la anunciada y esperada funcionalidad de eventos extendidos está disponible en SQL Databases. No existe anuncio oficial por el momento y durante nuestras pruebas hemos encontrado algunos errores que producían que la sesión terminara de forma abrupta.  Por ahora la funcionalidad nos ofrece un conjunto de sesiones preconfiguradas que vienen desactivadas por defecto:

 

Eventos extendidos en SQL Databases

Únicamente podremos tener una sesión en marcha concurrentemente por base de datos, si intentamos poner en marcha otra simultáneamente obtendremos el siguiente error:

Eventos extendidos en SQL Databases

Una de las sesiones que creemos que puede ser más util es la llamada azure_xe_query_batch ya que nos ofrece los batch ejecutados de forma muy parecida a lo que nos permite una traza de SQL Profiler. El primer paso será arrancar la sesión:

Eventos extendidos en SQL Databases

 

A continuación configuramos el visor de datos en vivo para esta sesión:

Eventos extendidos en SQL Databases

 

Y lo que nos mostraría sería información sobre los batch ejecutados e información útil como el consumo de cpu, la duración, las lecturas, etc:

Eventos extendidos en SQL Databases

 

Aparecen un conjunto de dmvs nuevas alrededor de los eventos extendidos a nivel de base de datos. Podemos ver qué eventos se capturan en la sesión y que el filtro (cuarto resultset) filtra por nuestro db_id, de forma que no podemos ver de ninguna forma actividad del servidor fuera de nuestra base de datos:

select * from sys.dm_xe_database_sessions

select * from sys.dm_xe_database_session_targets

select * from sys.dm_xe_database_session_object_columns

select * from sys.dm_xe_database_session_events

select * from sys.dm_xe_database_session_event_actions

 Eventos extendidos en SQL Databases

 

Para manejar la sesión hemos descubierto que se pueden utilizar comandos de start-stop de sesión de xevents a nivel de base de datos (indicando ON DATABASE en vez de ON SERVER):

alter event session azure_xe_query_batch ON DATABASE STATE = START

alter event session azure_xe_query_batch ON DATABASE STATE = STOP

No hemos encontrado forma de poder modificar una de estas sesiones para añadir otro target, por ejemplo un ringbuffer, para permitir explotar esta información de forma más eficiente, almacenarla en una tabla, etc. Entendemos que estas posibilidades deberá Microsoft añadirlas con mucho cuidado para evitar que un usuario malintencionado pueda causar algún tipo de problemas en el servidor. Se me ocurren por ejemplo problemas de rendimiento globales o de excesivo uso de memoria.

El flujo de datos que utiliza el visor de eventos extendidos se obtiene con la siguiente llamada:

SELECT type, data FROM sys.fn_MSxe_read_event_stream (‘azure_xe_query_batch’,0)

Esta función devuelve datos en formato stream, en binario, sobre los eventos generados por la sesión de eventos extendidos pero no conocemos forma de  poder procesar esto desde T-SQL. Por tanto por ahora estamos limitados a usar esta funcionalidad sin poder volcar los datos a una tabla por ejemplo lo cual seria bastante más práctico para poder realizar análisis, normalizaciones, etc.

En conclusión, la funcionalidad de eventos extendidos parece que está a punto de hacer su aparición en SQL Databases, quizás en Preview, y ello traerá consigo nuevas posibilidades para la diagnosis de problemas en SQL Databases. En un primer momento las sesiones ofrecidas son fijas, no modificables, ni podemos tener varias en funcionamiento concurrentemente. Teniendo en cuenta que SQL Profiler está marcado como obsoleto y su sustituto son los eventos extendidos tiene sentido que Azure opte por añadir funcionalidad en esa dirección dejando las “trazas clásicas” sin soporte.

 

0 Shares:
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like

Expresiones, parámetros y funciones en Azure Data Factory

Hay ocasiones, cuando estamos construyendo pipelines con Azure Data Factory, que queremos repetir patrones para extraer y procesar la información cambiando de manera dinámica, en tiempo de ejecución, valores, orígenes/destinos de los datasets, incluso los mismos linked services. Esto es posible mediante el uso de parámetros, expresiones y funciones. Vamos a ver cómo implementarlo con un ejemplo práctico en el que se nos plantea el siguiente supuesto. Se nos ha pedido que extraigamos todos los días los datos del día anterior de distintas tablas del DW a ficheros en un blob storage que además se nombre como la tabla de origen. Si no pudiéramos utilizar contenido dinámico tendríamos que crear dos datasets (uno de origen y otro de destino) y añadir una actividad de copia por cada tabla a exportar.

UNPIVOT “SINCRONO”

Más de una vez nos hemos encontrado en la situación de tener que unpivotar una tabla, teniendo así que recurrir o bien al componente “Unpivot” de SSIS o incluso a tener que guardar los datos en tabla y realizar posteriormente una lectura de esta misma utilizando T-SQL para unpivotarla, con los problemas que ambas soluciones nos puedan conllevar con un gran volumen de datos.

Power BI Report Page Tooltips

Mostraremos cómo se pueden crear Toolips personalizados con el objetivo de enriquecer nuestros informes permitiendo que los usuarios tengan acceso a información más detalla, estos "report page tooltips" se definirán en otra hoja y serán fácilmente accedidos solo poniendo el ratón sobre un visual del informe, además con la ventaja que estos tooltips pueden ser re-utilizable para todas las visualizaciones del reporte.