Duração estendida do evento Milissegundo ou Microssegundo?

15

Havia uma pergunta neste fórum sobre a module_endunidade de duração do evento estendido , que eu respondi. Detalhes aqui .

Está sempre em microssegundos para todos os eventos?

SqlWorldWide
fonte

Respostas:

30

É uma mistura de milissegundo, microssegundo e alguns são desconhecidos. A maneira mais fácil de descobrir que usei abaixo do código tsql para determinar qual é o 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'

Aqui está o conjunto de resultados de um servidor SQL 2016 SP1. Estou postando apenas parte dele. Veja a coluna DurationUnit e você pode ver 3 valores diferentes.

insira a descrição da imagem aqui

Para os NULL, acho que a melhor opção é executar (se possível com o horário de início e término) e descobrir qual é a unidade.

Fiz a mesma consulta no vnext SQL Server e confirmei que continuaremos com a mesma confusão no futuro.

SqlWorldWide
fonte