欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【转载】 Sqlserver查看数据库死锁的SQL语句

程序员文章站 2022-04-08 17:46:47
在Sqlsever数据库中,有时候操作数据库过程中会进行锁表操作,在锁表操作的过程中,有时候会出现死锁的情况出现,这时候可以使用SQL语句来查询数据库死锁情况,主要通过系统数据库Master数据库来查询,涉及到的系统数据表有dm_exec_requests、dm_exec_sessions、dm_e ......

在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技术小趣屋