xEvents con Analysis Services

Los Eventos Extendidos de SQL Server permiten capturar datos del mismo a través de estos y son el reemplazo a las trazas. Ofrecen un menor uso de recursos que su equivalente anterior. SSAS también permite la utilización de Eventos Extendidos para capturar la misma información que vemos a través del Profiler y las DMVs.

Iniciar un Evento Extendido

Para activar un evento debemos ejecutar un XMLA como el siguiente:

<Create xmlns=http://schemas.microsoft.com/analysisservices/2003/engine

xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

xmlns:ddl2=http://schemas.microsoft.com/analysisservices/2003/engine/2

xmlns:ddl3=http://schemas.microsoft.com/analysisservices/2003/engine/3

xmlns:ddl100_100=http://schemas.microsoft.com/analysisservices/2008/engine/100/100

xmlns:ddl200_200=http://schemas.microsoft.com/analysisservices/2010/engine/200/200

xmlns:ddl300_300=http://schemas.microsoft.com/analysisservices/2011/engine/300/300>

    <ObjectDefinition>

          <Trace>

               <ID>xEvent_SSAS_Trace</ID>

               <Name>xEvent_SSAS_Trace</Name>

               <AutoRestart>true</AutoRestart>

               <ddl300_300:XEvent>

                     <event_session name=xeas dispatchLatency=1 maxEventSize=4 maxMemory=4

                      memoryPartitionMode=none eventRetentionMode=allowSingleEventLoss

                      trackCausality=true>

                           <event package=AS name=QueryCubeEnd />

                           <target package=Package0 name=event_file>

                               <parameter name=filename value=H:\Files\Trace\xEvent_SSAS_Trace.xel/>

                               <parameter name =max_file_size value=10/>

                               <parameter name =max_rollover_files value=15/>

                               <parameter name =increment value=1/>

                           </target>

                     </event_session>

               </ddl300_300:XEvent>

          </Trace>

    </ObjectDefinition>

</Create>

 

Este XMLA posee algunas propiedades que debemos ajustar a nuestra necesidad:

  • AutoRestart: Indica al SSAS que el evento debe reiniciarse automáticamente al reiniciar el servicio.
  • Event: Debemos agregar tantos Event como tipos de eventos necesitemos capturar.

Debemos tener cuidado con la cantidad y tipos de eventos que pidamos capturar pues puede afectar la performance del SSAS y/o generar muchísimos datos 

    • Filename: podemos indicar la ruta y nombre de archivo a generar.
    • Max_File_Size: podemos indicar en MB el tamaño máximo del archivo generado. Cuando alcance ese valor generar un nuevo archivo.
    • Max_Rollover_Files: cantidad de archivos a mantener.

 

Detener un Evento Extendido

<Delete xmlns=http://schemas.microsoft.com/analysisservices/2003/engine>

    <Object>

          <TraceID>xEvent_SSAS_Trace</TraceID>

    </Object>

</Delete>

 

Consultar Eventos Extendidos

Para ver los eventos ejecutándose en el SSAS debemos consultar la siguiente DMV

SELECT

    *

FROM

    $system.discover_traces

 

Visualizar Eventos Extendidos

Los archivos XEL pueden abrirse desde el Management Studio para su revisión, es suficiente con hacer doble click sobre el archivo y visualizarlos. Ahora si necesitamos levantar estos debemos utilizar la funcion de SQL sys.fn_xe_file_target_read_file.

SELECT

    xe.TraceFileName,

    xe.TraceEvent,

    xe.EventDataXML.value(‘(/event/data[@name=”ServerName”]/value)[1]’,‘varchar(50)’) AS ServerName,

    xe.EventDataXML.value(‘(/event/data[@name=”DatabaseName”]/value)[1]’,‘varchar(50)’) AS DatabaseName,

    xe.EventDataXML.value(‘(/event/data[@name=”NTCanonicalUserName”]/value)[1]’,‘varchar(50)’) AS NTCanonicalUserName,

    xe.EventDataXML.value(‘(/event/data[@name=”ConnectionID”]/value)[1]’,‘int’) AS ConnectionID,

    xe.EventDataXML.value(‘(/event/data[@name=”RequestID”]/value)[1]’,‘varchar(50)’) AS RequestID,

    xe.EventDataXML.value(‘(/event/data[@name=”CurrentTime”]/value)[1]’,‘datetime’) AS CurrentTime,

    xe.EventDataXML.value(‘(/event/data[@name=”StartTime”]/value)[1]’,‘datetime’) AS StartTime,

    xe.EventDataXML.value(‘(/event/data[@name=”EndTime”]/value)[1]’,‘datetime’) AS EndTime,

    xe.EventDataXML.value(‘(/event/data[@name=”Duration”]/value)[1]’,‘bigint’) AS Duration,

    xe.EventDataXML.value(‘(/event/data[@name=”ObjectPath”]/value)[1]’,‘varchar(max)’) AS ObjectPath

FROM

    (

        SELECT

            [FILE_NAME] AS TraceFileName,

            OBJECT_NAME AS TraceEvent,

            CONVERT(XML,Event_data) AS EventDataXML

        FROM

            sys.fn_xe_file_target_read_file(‘H:\BCR\Files\Trace\*.xel’, NULL, NULL, NULL)

    ) xe

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s