【原】關於SQLServer死鎖的診斷和定位
關於SQLServer死鎖的診斷和定位
在SQLServer中經常會發生死鎖情況,必須連線到企業管理器—>管理—>當前活動—>鎖/程式 ID去查詢相關死鎖程式和定位死鎖的原因。
透過查詢分析器也要經過多個系統表(sysprocesses,sysobjects等)和系統儲存過程(sp_who,sp_who2,sp_lock等),而且不一定能夠直接定位到。
本儲存過程參考sp_lock_check和sysprocesses系統表,同時利用了DBCC命令,直接將死鎖和造成死鎖的程式和相關語句列出,以方便分析和定位。
Create procedure sp_check_deadlock as set nocount on /* select --建立被鎖程式臨時表 --建立之間的關聯表 DECLARE dbcc_inputbuffer CURSOR READ_ONLY DECLARE @lockedspid int FETCH NEXT FROM dbcc_inputbuffer INTO @belockedspid,@lockedspid WHILE (@@fetch_status <> -1)
--print '被堵塞程式'
INSERT INTO #tempbelocktracestatus
INSERT INTO #templocktracestatus
INSERT INTO #locktracestatus END FETCH NEXT FROM dbcc_inputbuffer INTO @belockedspid,@lockedspid END CLOSE dbcc_inputbuffer DEALLOCATE dbcc_inputbuffer select * from #locktracestatus return (0) -- sp_check_deadlock |
執行該儲存過程
exec sp_check_deadlock |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6517/viewspace-350618/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於鎖的快速定位
- SQLServer的死鎖分析(1):頁鎖SQLServer
- 關於oracle死鎖的模擬Oracle
- Sqlserver分析死鎖問題SQLServer
- 等待事件快速定位診斷事件
- 測試庫死鎖診斷DEADLOCK DETECTED ( ORA-00060 )
- Sqlserver關於校驗和_備份還原的CHECKSUMSQLServer
- 【sqlserver】殺掉所有死鎖程式SQLServer
- 模擬SQLserver死鎖現象SQLServer
- 關於Oracle死鎖處理方法Oracle
- golang中關於死鎖的思考與學習Golang
- SQLserver 程式被死鎖問題解決SQLServer
- SQLSERVER 語句交錯引發的死鎖研究SQLServer
- 關於資料庫死鎖問題的解釋資料庫
- 關於處理死鎖的一點小知識
- PostgreSQL死鎖相關SQL
- MySQL 死鎖和鎖等待MySql
- 有關於SQL Server資料庫死鎖的分析(轉)SQLServer資料庫
- 死鎖(ora-00060)以及死鎖相關的知識點
- 基於等待事件的效能診斷事件
- 對於死鎖的處理流程:
- 關於 SAP HANA 資料庫的死鎖問題(deadlock)資料庫
- 和外來鍵相關的阻塞和死鎖問題總結
- mysql行鎖和死鎖檢測MySql
- Mysql 兩階段鎖和死鎖MySql
- 基於等待事件的效能診斷(轉)事件
- SQ死鎖及死鎖的解決
- SQLServer 如何收集資料以排除 SQL 死鎖問題SQLServer
- Sqlserver鎖升級的理解和例子SQLServer
- MySQL:MTS和mysqldump死鎖MySql
- JAVA CPU100%與執行緒死鎖定位Java執行緒
- sqlserver大數批次update時死鎖的問題及解決方案SQLServer
- 如何診斷伺服器關閉的原因伺服器
- 關閉功能顧問的那些診斷模式模式
- 作業系統(5) 死鎖的概念 死鎖產生的必要條件 死鎖的處理策略 預防死鎖 避免死鎖 死鎖的檢測和解除 銀行家演算法作業系統演算法
- 關於ejb使用單例方式獲取id時發生的死鎖?單例
- sqlserver關於always on的總結SQLServer
- 關於SQLSERVER備份SQLServer