6

ho una stored procedure che viene chiamata da un 2012 report di SQL Server che sta prendendo l'età per l'esecuzione della produzione rispetto allo sviluppo a causa di una sessione di blocco lck_m_sSQL Server LCK_M_S accade solo nella produzione

Le piste di stored procedure istantaneamente quando eseguito in SQL Server Management Studio e funziona bene anche quando viene chiamato come parte del report da un computer portatile di sviluppo tramite Visual Studio.

Quando il report viene caricato sul server di produzione, viene visualizzato questo problema di blocco.

In che modo è possibile determinare quale causa il problema lck_m_s in fase di produzione?

risposta

10

Eseguire questa query quando il problema si verifica ancora una volta:

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 

Vi darà la SPID della sessione che ha causato il blocco, su cui è stato bloccato delle risorse, e il testo della query più rcent per quella sessione. Questo dovrebbe darti un solido punto di partenza.

0

avete un paio di opzioni

  1. Impostare il rapporto processo bloccato. In sostanza, si imposta la configurazione di sistema blocked process threshold (s) su un numero diverso da zero di secondi e si imposta una notifica di evento sull'evento BLOCKED_PROCESS_REPORT. Otterrai un rapporto XML ogni volta che un processo viene bloccato per oltre la soglia impostata. Il lato negativo di questo è che sarà per tutto ciò che viene bloccato, non solo la procedura, ma si otterrà chi tiene il blocco non compatibile nel report.

  2. Impostare una sessione di eventi estesa per la procedura per acquisire l'evento lock_released in cui la durata è più lunga di quanto si desideri attendere. Il lato positivo è che questo è estremamente mirato e puoi definire la sessione in modo da ottenere pochissimo rumore. Il rovescio della medaglia è che non saprai quale processo trattiene il blocco incompatibile (anche se otterrai una descrizione abbastanza dettagliata di quale sia la risorsa bloccata per favorire la tua indagine).