1死鎖發生時,透過如下語法,查詢出引起死鎖的操作
use master
go
declare @spid int,@bl int
DECLARE s_cur CURSOR FOR
select 0 ,blocked
from (select * from sysprocesses where blocked>0 ) a
where not exists(select * from (select * from sysprocesses where blocked>0 ) b
where a.blocked=spid)
union select spid,blocked from sysprocesses where blocked>0
OPEN s_cur
FETCH NEXT FROM s_cur INTO @spid,@bl
WHILE @@FETCH_STATUS = 0
begin
if @spid =0
select '引起資料庫死鎖的是: '+ CAST(@bl AS VARCHAR(10)) + '程式號,其執行的SQL語法如下'
else
select '程式號SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '程式號SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其當前程式執行的SQL語法如下'
DBCC INPUTBUFFER (@bl )
FETCH NEXT FROM s_cur INTO @spid,@bl
end
CLOSE s_cur
DEALLOCATE s_cur
exec sp_who2
2查詢程式/資料庫,此t_sql語法在什麼地方使用
3分析找到的,並解決問題
EG:
/*
-------------------------------------------------------
引起資料庫死鎖的是: 71程式號,其執行的SQL語法如下
EventType Parameters EventInfo
-------------- ---------- ------------------------------------------------
Language Event 0
select * from test
insert test values(1,2)
(所影響的行數為 1 行)
DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。
------------------------------------------------------------------------------
程式號SPID:64被程式號SPID:71阻塞,其當前程式執行的SQL語法如下
EventType Parameters EventInfo
-------------- ---------- ------------------------------------------------
Language Event 0
select * from test
insert test values(1,2)
(所影響的行數為 1 行)
DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。
------------------------------------------------------------------------------
程式號SPID:65被程式號SPID:64阻塞,其當前程式執行的SQL語法如下
EventType Parameters EventInfo
-------------- ---------- --------------------------------------------------------------------------------------------------
Language Event 0 begin tran
select * from test with (holdlock)
waitfor time '12:00'
select * from test
coMMit
(所影響的行數為 1 行)
DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。
------------------------------------------------------------------------------
程式號SPID:73被程式號SPID:64阻塞,其當前程式執行的SQL語法如下
EventType Parameters EventInfo
-------------- ---------- --------------------------------------------------------------------------------------------------
Language Event 0 begin tran
select * from test with (holdlock)
waitfor time '12:00'
select * from test
coMMit
(所影響的行數為 1 行)
DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。
*/
sql server死鎖的問題
常看到死鎖的問題,一般都是KILL程式,但如果不查出引起死鎖的原因,死鎖會時常發生
可以透過查詢引起死鎖的的操作,就可以方便的解決死鎖,現將日常解決問題的方法總結。[@more@]
可以透過查詢引起死鎖的的操作,就可以方便的解決死鎖,現將日常解決問題的方法總結。[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/66009/viewspace-800719/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server 的死鎖SQLServer
- SQL SERVER死鎖查詢,死鎖分析,解鎖,查詢佔用SQLServer
- MySQL死鎖問題MySql
- SQLServer 如何收集資料以排除 SQL 死鎖問題SQLServer
- MySQL 死鎖問題分析MySql
- Slave SQL執行緒與PXB FTWRL死鎖問題分析SQL執行緒
- MySQL死鎖系列-線上死鎖問題排查思路MySql
- SQL Server 資料庫查詢死鎖的處理步驟SQLServer資料庫
- 如何捕獲和記錄SQL Server中發生的死鎖SQLServer
- MySQL鎖等待與死鎖問題分析MySql
- SpringBoot Seata 死鎖問題排查Spring Boot
- 在 SQL Server 中查詢活動連線和死鎖SQLServer
- Oracle死鎖一例(ORA-00060),鎖表導致的業務死鎖問題Oracle
- Python | 淺談併發鎖與死鎖問題Python
- 淺談SQL Server中的快照問題SQLServer
- 併發技術5:死鎖問題
- 解決Oracle死鎖問題步驟Oracle
- Mysql使用kill命令解決死鎖問題MySql
- AdornerDecorator的CacheMode繫結和windows鎖屏導致TableControl鎖死問題Windows
- 死鎖問題排查過程-間隙鎖的復現以及解決
- SQL Server 查詢超時問題排查SQLServer
- 故障解析丨一次死鎖問題的解決
- 關於 SAP HANA 資料庫的死鎖問題(deadlock)資料庫
- [翻譯]:SQL死鎖-阻塞探測SQL
- JAVA死鎖排查-效能測試問題排查思路Java
- 記一次 MySQL select for update 死鎖問題MySql
- 線上併發事務死鎖問題排查
- Sql Server深入的探討鎖機制SQLServer
- 線上問題排查:記一次 Redis Cluster Pipeline 導致的死鎖問題Redis
- Python | 多執行緒死鎖問題的巧妙解決方法Python執行緒
- 手把手教你分析解決MySQL死鎖問題MySql
- SQL Server database mail問題診斷一例SQLServerDatabaseAI
- SQL Server資料庫恢復常見問題SQLServer資料庫
- 從一個死鎖問題分析最佳化器特性
- 作業系統(5) 死鎖的概念 死鎖產生的必要條件 死鎖的處理策略 預防死鎖 避免死鎖 死鎖的檢測和解除 銀行家演算法作業系統演算法
- SQL Server管理員帳號鎖定後如何恢復訪問VUSQLServer
- SQL SERVER資料庫datediff函式引發的效能問題SQLServer資料庫函式
- 【疑難系列】 一個看起來是資料庫死鎖的問題資料庫
- 一次徹底講清如何處理mysql 的死鎖問題MySql