gpt4 book ai didi

sql - 如何在阻塞期间找出由 associatedObjectId 表示的对象?

转载 作者:行者123 更新时间:2023-12-04 22:46:36 25 4
gpt4 key购买 nike

我收到了另一个团队关于 SQL Server 中阻塞的报告。查看结果

  Exec sp_who2

并从 Glenn Berry 的博客查询
SELECT blocking.session_id AS blocking_session_id
,blocked.session_id AS blocked_session_id
,waitstats.wait_type AS blocking_resource
,waitstats.wait_duration_ms
,waitstats.resource_description
,blocked_cache.text AS blocked_text
,blocking_cache.text AS blocking_text
FROM sys.dm_exec_connections AS blocking
INNER JOIN sys.dm_exec_requests blocked
ON blocking.session_id = blocked.blocking_session_id
CROSS APPLY sys.dm_exec_sql_text(blocked.sql_handle) blocked_cache
CROSS APPLY sys.dm_exec_sql_text(blocking.most_recent_sql_handle) blocking_cache
INNER JOIN sys.dm_os_waiting_tasks waitstats
ON waitstats.session_id = blocked.session_id

我希望无法捕捉到任何被阻止的东西。多次运行我开始注意到出现了一些东西,但下次我运行查询时,blcoking 消失了。

我通过 SELECT INTO 创建了临时表
       ,blocking_cache.text AS blocking_text
INTO #TempBlockingTable
FROM sys.dm_exec_connections AS blocking

修改后的查询为 INSERT INTO SELECT 。现在,我可以根据需要多次运行查询,而不必担心结果会消失。

我一直运行查询大约 10 秒钟,直到我终于得到了一些结果。
 SELECT * FROM #TempBlockingTable

查看 resource_description 中的 sys.dm_os_waiting_tasks 列,我发现数据以以下格式显示。
 <type-specific-description> id=lock<lock-hex-address> mode=<mode> associatedObjectId=<associated-obj-id> 
sys.dm_os_waiting_tasks http://technet.microsoft.com/en-us/library/ms188743.aspx 上的 Microsoft 文档没有 associatedObjectId 的定义

最佳答案

答案实际上来自 Aaron Bertrand 在 Google Groups 上找到的。要获取 OBJECT_NAMEassociatedObjectId,您需要运行以下查询

SELECT OBJECT_NAME([object_id])
FROM sys.partitions
WHERE partition_id = 456489945132196

这个数字 456489945132196 代表来自 associatedObjectIdresource_description 列的 sys.dm_os_waiting_tasks 的值

关于sql - 如何在阻塞期间找出由 associatedObjectId 表示的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22797023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com