SQL Server LCK_M_S仅在生产中发生

bes*_*est 6 sql sql-server blocking reporting-services sql-server-2012

我有一个由SQL Server 2012报告调用的存储过程,由于阻塞会话,该报告与开发相比需要在生产中运行一个年龄 lck_m_s

存储过程在SQL Server Management Studio中执行时即时运行,并且当通过Visual Studio从开发笔记本电脑中作为报告的一部分调用时也可以正常运行.

将报告上载到生产服务器时,将显示此阻止问题.

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

dea*_*ean 10

问题再次发生时执行此查询:

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
Run Code Online (Sandbox Code Playgroud)

它将为您提供导致阻塞的会话的spid,阻止资源的文本以及该会话的最有争议的查询的文本.这应该给你一个坚实的起点.