天天看點

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 <> 
           

繼續閱讀