我有一个存储过程,该存储过程由SQL Server 2012报表调用,由于 session lck_m_s被阻塞,与开发相比,它花了很多时间才能在生产环境中运行

该存储过程在SQL Server Management Studio中执行时可以立即运行,并且在通过Visual Studio作为开发笔记本电脑的报告的一部分调用时也可以很好地运行。

将报告上载到生产服务器后,就会出现此阻止问题。

在生产中如何查找导致lck_m_s问题的原因?

最佳答案

问题再次发生时,请执行以下查询:

select * from
sys.dm_os_waiting_tasks t
inner join sys.dm_exec_connections c on c.session_id = t.blocking_session_id
cross apply sys.dm_exec_sql_text(c.most_recent_sql_handle) as h1

它将为您提供导致阻塞的 session 的spid,阻塞了哪些资源以及该 session 的最新查询的文本。这应该为您提供一个坚实的起点。

关于SQL Server LCK_M_S仅在生产中发生,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23057911/

10-11 02:49
查看更多