Erweiterte Ereignisdauer Millisekunde oder Mikrosekunde?

15

In diesem Forum gab es eine Frage zu Extended Event module_endduration unit, die ich beantwortet habe. Details hier .

Ist es immer in Mikrosekunden für alle Ereignisse?

SqlWorldWide
quelle

Antworten:

30

Es ist eine Mischung aus Millisekunden, Mikrosekunden und einige sind unbekannt. Der einfachste Weg, um zu finden, habe ich unter tsql-Code verwendet, um zu bestimmen, welche was ist.

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'

Hier ist die Ergebnismenge eines SQL 2016 SP1-Servers. Ich poste nur einen Teil davon. In der Spalte DurationUnit sehen Sie 3 verschiedene Werte.

Bildbeschreibung hier eingeben

Für NULL finde ich die beste Option, zu laufen (wenn möglich mit Start- und Endzeit) und herauszufinden, was die Einheit ist.

Ich habe dieselbe Abfrage für vnext SQL Server ausgeführt und bestätigt, dass wir die gleiche Verwirrung in die Zukunft tragen werden.

SqlWorldWide
quelle