web-dev-qa-db-fra.com

Durée d'événement étendue Milliseconde ou Microseconde?

Il y avait une question dans ce forum à propos de Événement étendu module_end unité de durée, à laquelle j'ai répondu. Détails ici .

Est-ce toujours en microsecondes pour tous les événements?

15
SqlWorldWide

C'est un mélange de millisecondes, microsecondes et certains sont inconnus. Le moyen le plus simple de trouver J'ai utilisé le code tsql ci-dessous pour déterminer ce qui est quoi.

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'

Voici le jeu de résultats d'un serveur SQL 2016 SP1. Je n'en poste qu'une partie. Regardez la colonne DurationUnit et vous pouvez voir 3 valeurs différentes.

enter image description here

Pour les valeurs NULL, je trouve que la meilleure option est d'exécuter (si possible avec l'heure de début et de fin) et de trouver l'unité.

J'ai exécuté la même requête contre vnext SQL Server et confirmé que nous porterons la même confusion à l'avenir.

31
SqlWorldWide