Sql*_*ide 17 sql-server extended-events
在这个论坛上有一个关于扩展事件module_end持续时间单位的问题,我回答了这个问题。详情请看这里。
对于所有事件,它总是以微秒为单位吗?
Sql*_*ide 35
它是毫秒、微秒和一些未知的混合。最简单的查找方法我使用下面的 tsql 代码来确定哪个是什么。
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'
Run Code Online (Sandbox Code Playgroud)
这是来自 SQL 2016 SP1 服务器的结果集。我只贴一部分。查看 DurationUnit 列,您可以看到 3 个不同的值。
对于 NULL 的,我发现最好的选择是运行(如果可能的话,开始和结束时间)并找到单位是什么。
我对 vnext SQL Server 运行了相同的查询,并确认我们将来会遇到同样的困惑。