1. 程式人生 > >SQL Server '已超過了鎖請求超時時段' 問題解決方法

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