了解“模式”参数并查找 SQL Server 中事件属性的文档

Faj*_*iya 1 sql-server documentation extended-events

我正在 SQL Server 中处理扩展事件会话,并遇到了我不完全理解的 T-SQL 代码的一部分。具体来说,我对以下代码部分中使用“Mode = 3 OR Mode = 4”感到困惑:

...
ADD EVENT sqlserver.latch_suspend_end
(WHERE (
Duration > 0
AND (Mode = 3 OR Mode = 4)
AND has_waiters = 1
)
)
...
Run Code Online (Sandbox Code Playgroud)

我一直在尝试寻找文档或任何类型的信息来解释“Mode = 3”和“Mode = 4”在这种情况下代表什么,但到目前为止,我还没有运气。

此外,我有兴趣找到描述不同事件的属性和可能值的文档或参考的综合来源,而不仅仅是针对这个特定示例。有人可以向我指出相关文档或解释这些模式值在此扩展事件会话中的含义吗?

预先感谢您的帮助!

Mar*_*ith 5

这些值对应于UPEX锁存器

mode字段的数据类型为latch_mode

数值到含义的映射包含在sys.dm_xe_map_values

地图键 地图值
0 荷兰
1 凯普
2 SH
3 向上
4 前任
5 DT
6 最后一个插销

注意:我不知道该LASTLATCH条目是关于什么的,也不知道这是否可以在实践中真正看到。1主要闩锁文档仅提及值为 的条目5sys.dm_os_wait_stats文档确实还提到LATCH_NL“仅供参考”,但没有神秘的第七模式。这可能与Paul White 在此研究的lock_mode假问题类似。

尽管在 SQL Server 2000 8.00.194 中明显看到的错误消息的上下文中提到了它

SQL Server Assertion: File: <latch .cpp>, line=799
Failed Assertion = 'type > NL && type < LASTLATCH'.
Run Code Online (Sandbox Code Playgroud)

要在将来自己获取这些映射,您可以调整示例查询C.5 sys.dm_xe_map_values 和事件字段以获取上表中显示的值。

SELECT --C.5
        dp.name         AS [Package],
        do.name         AS [Object],
        do.object_type  AS [Object-Type],
        'o--c'          AS [O--C],
        dc.name         AS [Column],
        dc.type_name    AS [Column-Type-Name],
        dc.column_type  AS [Column-Type],
        dc.column_value AS [Column-Value],
        'c--m'          AS [C--M],
        dm.map_value    AS [Map-Value],
        dm.map_key      AS [Map-Key]
FROM   sys.dm_xe_objects AS do
       JOIN sys.dm_xe_object_columns AS dc
         ON dc.object_name = do.name
       JOIN sys.dm_xe_map_values AS dm
         ON dm.name = dc.type_name
       JOIN sys.dm_xe_packages AS dp
         ON dp.guid = do.package_guid
WHERE  dp.name = 'sqlserver'
       AND do.object_type = 'event'
       AND do.name = 'latch_suspend_end'
       AND dc.name = 'mode'
ORDER  BY [Package],
          [Object],
          [Column],
          [Map-Value]; 
Run Code Online (Sandbox Code Playgroud)