¿Duración extendida del evento en milisegundos o microsegundos?

15

Hubo una pregunta en este foro sobre la module_endunidad de duración del evento extendido , que respondí. Detalles aquí .

¿Está siempre en microsegundos para todos los eventos?

SqlWorldWide
fuente

Respuestas:

30

Es una mezcla de milisegundos, microsegundos y algunos son desconocidos. La forma más fácil de encontrar que utilicé debajo del código tsql para determinar cuál es qué.

SELECT p.name package_name,
       o.name event_name,
       c.name event_field,
       DurationUnit= CASE
                         WHEN c.description LIKE '%milli%' 
                         THEN SUBSTRING(c.description, CHARINDEX('milli', c.description),12)
                         WHEN c.description LIKE '%micro%' 
                         THEN SUBSTRING(c.description, CHARINDEX('micro', c.description),12)
                         ELSE NULL
                     END,
       c.type_name field_type,
       c.column_type column_type
FROM sys.dm_xe_objects o
JOIN sys.dm_xe_packages p ON o.package_guid = p.guid
JOIN sys.dm_xe_object_columns c ON o.name = c.object_name
WHERE o.object_type = 'event'
AND c.name ='duration'

Aquí está el conjunto de resultados de un servidor SQL 2016 SP1. Solo publico parte de ella. Mire la columna DurationUnit y puede ver 3 valores diferentes.

ingrese la descripción de la imagen aquí

Para los NULL, creo que la mejor opción es ejecutar (si es posible con la hora de inicio y finalización) y encontrar cuál es la unidad.

Ejecuté la misma consulta en vnext SQL Server y confirmó que llevaremos la misma confusión al futuro.

SqlWorldWide
fuente