Sqlserver查看數據庫死鎖的SQL語句


在Sqlsever數據庫中,有時候操作數據庫過程中會進行鎖表操作,在鎖表操作的過程中,有時候會出現死鎖的情況出現,這時候可以使用SQL語句來查詢數據庫死鎖情況,主要通過系統數據庫Master數據庫來查詢,涉及到的系統數據表有dm_exec_requests、dm_exec_sessions、dm_exec_sql_text等幾個表。

SQL查詢語句如下:

SELECT 
    es.session_id,
    database_name = DB_NAME(er.database_id),
    er.cpu_time,
    er.reads,
    er.writes,
    er.logical_reads,
    login_name,
    er.status,
    blocking_session_id,
    wait_type,
    individual_query = SUBSTRING (qt.text, er.statement_start_offset/2, (CASE WHEN er.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 ELSE er.statement_end_offset END - er.statement_start_offset)/2),
    parent_query = qt.text,
    program_name,
    host_name,
    nt_domain,
    start_time
FROM 
    sys.dm_exec_requests er
    INNER JOIN sys.dm_exec_sessions es ON er.session_id = es.session_id
    CROSS APPLY sys.dm_exec_sql_text(er.sql_handle)as qt
WHERE 
    es.session_id > 50           
    AND es.session_Id NOT IN (@@SPID) 
ORDER BY 
    1, 2

 

原文出自:Sqlserver查看數據庫死鎖的SQL語句_IT技術小趣屋


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM