6

Ich habe eine gespeicherte Prozedur, die von einem SQL Server 2012-Bericht aufgerufen wird, die ein Alter nimmt wegen einer blockierenden Sitzung lck_m_sSQL Server LCK_M_S geschieht nur in der Produktion

Die gespeicherte Prozedur läuft sofort, wenn sie in SQL Server Management Studio ausgeführt werden, und funktioniert auch gut, wenn sie als Teil des Berichts von einem Entwicklungs-Laptop über Visual Studio aufgerufen wird.

Wenn der Bericht auf den Produktionsserver hochgeladen wird, wird dieses Blockierungsproblem angezeigt.

Wie kann ich herausfinden, was das lck_m_s Problem in der Produktion verursacht?

Antwort

10

diese Abfrage ausführen, wenn das Problem erneut auftritt:

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 

Es wird Ihnen die spid der Sitzung, die Blockierung verursacht, auf die Ressource blockiert wurde, und den Text der meisten rcent Abfrage für diese Sitzung. Dies sollte Ihnen einen soliden Ausgangspunkt geben.

0

Sie haben ein paar Optionen

  1. den blockierten Prozess Bericht einrichten. Im Wesentlichen setzen Sie die Systemkonfiguration blocked process threshold (s) auf eine von Null verschiedene Anzahl von Sekunden und richten eine Ereignisbenachrichtigung für das Ereignis BLOCKED_PROCESS_REPORT ein. Sie erhalten jedes Mal, wenn ein Prozess für mehr als den festgelegten Schwellenwert blockiert wird, einen XML-Bericht. Der Nachteil dabei ist, dass alles blockiert wird, nicht nur die Prozedur, sondern Sie erhalten auch die, die die nicht kompatible Sperre im Bericht hält.

  2. Richten Sie eine erweiterte Ereignissitzung für Ihre Prozedur ein, um das Ereignis lock_released zu erfassen, bei dem die Dauer länger ist, als Sie warten möchten. Der Vorteil ist, dass dies extrem zielgerichtet ist und Sie die Sitzung so definieren können, dass Sie sehr wenig Lärm bekommen. Der Nachteil ist, dass Sie nicht wissen, welcher Prozess die inkompatible Sperre enthält (obwohl Sie eine ziemlich detaillierte Beschreibung dessen erhalten, was die gesperrte Ressource ist, um Ihre Untersuchung voranzutreiben).

Verwandte Themen