|
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
复制代码
|
|