SQLSERVER 數據庫死鎖的解決方案!
sp_who
kill spid
SQLSERVER出現死鎖的一個常見情況是:
SQLSERVER2000創建一個數據庫的數據庫文件和日誌文件的增長規則是按10%增長。假設數據庫文件的容量積累到100GB,則下次數據庫擴容時是按10%一次性擴大文件空間,也就是一次性要擴大10GB的空間。一次擴容10GB,將使硬盤嚴重負載,至少需要幾秒鐘的時機,而此時如果客戶端正頻繁訪問數據庫,將無法獲得數據庫響應,提示文件存儲空間不足(此時正在擴容)。此時就是容易產生死鎖的情況了,一旦死鎖,SQLSERVER2000將進入卡死狀態,即使經過幾秒後,文件已經擴容,它還是死的。這種情況在SQLERVER2005有了改進,應該是不會死了。
其實這是微軟的SQLSERVER默認設置值造成的,也就是說你安裝SQLSERVER2000後,不修改這個默認值,如果你的系統數據量很大,而且有頻繁操作的時間段,那麼總有一天你的系統會出現這個死鎖的現象,難以避免!幸好在SQLSERVER2005已經修改這個默認設置。
SQLSEVER2005也增加了一個內部安全通道,即使數據庫進入卡死狀態,也可以通過這個安全通道進行kill spid操作!