SQL Server阻塞查詢語句
sql server的阻塞查詢,主要來自sysprocesses。通常我們在處理時需要加入其它相關的檢視或表如dm_exec_connections,dm_exec_sql_text。透過幾個語句的查詢,可以找到阻塞的語句。
查詢阻塞
語句一
select bl.spid blocking_session,bl.blocked blocked_session,st.text blockedtext from (SELECT spid ,blocked
FROM (SELECT * FROM sys.sysprocesses WHERE blocked>0 ) a
WHERE not exists(SELECT *
FROM (SELECT *
FROM sys.sysprocesses
WHERE blocked>0 ) b
WHERE a.blocked=spid)
union SELECT spid,blocked
FROM sys.sysprocesses
WHERE blocked>0) bl,(SELECT t.text ,c.session_id
FROM sys.dm_exec_connections c
CROSS APPLY sys.dm_exec_sql_text (c.most_recent_sql_handle) t) st
where bl.blocked = st.session_id
語句二
SELECT a.blocking_session_id, a.wait_duration_ms, a.session_id,b.text
FROM sys.dm_os_waiting_tasks a,
(SELECT t.text ,c.session_id
FROM sys.dm_exec_connections c
CROSS APPLY sys.dm_exec_sql_text (c.most_recent_sql_handle) t) b
WHERE a.session_id = b.session_id and a.blocking_session_id IS NOT NULL
語句三,包含阻塞與被阻塞的sql指令碼
select bl.spid blocking_session,bl.blocked blocked_session,st.text blockedtext,sb.text blockingtext
from
(SELECT spid ,blocked
FROM (SELECT * FROM sys.sysprocesses WHERE blocked>0 ) a
WHERE not exists(SELECT *
FROM (SELECT *
FROM sys.sysprocesses
WHERE blocked>0 ) b
WHERE a.blocked=spid)
union
SELECT spid,blocked
FROM sys.sysprocesses
WHERE blocked>0) bl,
(SELECT t.text ,c.session_id
FROM sys.dm_exec_connections c
CROSS APPLY sys.dm_exec_sql_text (c.most_recent_sql_handle) t) st,
(SELECT t.text ,c.session_id
FROM sys.dm_exec_connections c
CROSS APPLY sys.dm_exec_sql_text (c.most_recent_sql_handle) t) sb
where bl.blocked = st.session_id and bl.spid = sb.session_id
查詢死鎖
select *
from master..SysProcesses
where db_Name(dbID) = '資料庫名'
and spId <> @@SpId
and dbID <> 0
and blocked >0;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29371470/viewspace-2128282/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 查詢阻塞與被阻塞SQL語句SQL
- SQL server 查詢語句SQLServer
- MySQL查詢阻塞語句MySql
- SQL Server-簡單查詢語句SQLServer
- Sql Server系列:查詢分頁語句SQLServer
- SQL SERVER 條件語句的查詢SQLServer
- SQL Server 語句日期格式查詢方法SQLServer
- SQL Server 查詢歷史執行的SQL語句SQLServer
- SQL查詢語句 (Oracle)SQLOracle
- sql查詢語句流程SQL
- SQL mother查詢語句SQL
- SQL server資料庫表碎片比例查詢語句SQLServer資料庫
- MySQL、Oracle和SQL Server的分頁查詢語句MySqlOracleServer
- SQL Server-簡單查詢語句,疑惑篇(三)SQLServer
- SQL查詢語句使用 (轉)SQL
- sql 查詢經典語句SQL
- SQL SERVER 資料庫查詢表和欄位資訊語句SQLServer資料庫
- postgresql dba常用sql查詢語句SQL
- SQL語句查詢表結構SQL
- mysql 查詢建表語句sqlMySql
- SQL查詢語句精華文章(轉)SQL
- oracle、my sql、sql隨機查詢語句OracleSQL隨機
- 使用sql語句查詢平均值,使用sql語句查詢資料總條數, not in 篩選語句的使用SQL
- mysql查詢效率慢的SQL語句MySql
- SQL單表查詢語句總結SQL
- 查詢執行慢的SQL語句SQL
- SQL語句巢狀查詢問題SQL巢狀
- 查詢sql語句執行次數SQL
- 查詢效率低下的sql的語句SQL
- 查詢正在執行的SQL語句SQL
- 查詢引起Oracle阻塞事件的源頭語句的方法Oracle事件
- Sql server中時間查詢的一個比較快的語句(轉)SQLServer
- 一條SQL語句查詢塊分解及查詢轉換SQL
- Laravel 框架查詢執行的 SQL 語句Laravel框架SQL
- 在mysql查詢效率慢的SQL語句MySql
- SQL基礎的查詢語句烈鉍SQL
- 查詢Oracle正在執行的SQL語句OracleSQL
- 幾個定位、查詢session的sql語句SessionSQL