SQL Server '已超過了鎖請求超時時段' 問題解決方法

SQL 有時遇到如下錯誤:

已超過了鎖請求超時時段。 (Microsoft SQL Server,錯誤: 1222)

刷新以後,右擊某張表或者庫,發現裏面的表全部消失了 或者查詢不到。 這是因爲 sql進程死鎖,資源被搶佔,要解決這個問題,得殺死關閉 死鎖的進程,下面介紹解決方案:
殺死進程的前提是找到 那個死鎖的進程

SELECT blocking_session_id '阻塞進程的ID', wait_duration_ms '等待時間(毫秒)', session_id '(會話ID)' FROM sys.dm_os_waiting_tasks

這句sql就可以查詢到當前阻塞進程的ID ,下面只要殺死這些進程就可以了

kill spid(進程ID) 或者 exec(‘kill’ ‘spid’) 

這樣就可以了 重新刷新下 庫 一切正常了

順便介紹下相關內容的另外兩個sql:

--查詢當前活動的鎖管理器資源的信息  
SELECT resource_type '資源類型',request_mode '請求模式',request_type '請求類型',request_status '請求狀態',request_session_id '會話ID' FROM sys.dm_tran_locks
--查詢數據庫進程(where 篩選庫)
select spId  from master..SysProcesses
where db_Name(dbID) = 'text' and spId <> @@SpId and dbID <> 0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章