我目前正在調查我們SQL 2008數據庫中的一個問題,它始終顯示鎖定。它將運行良好數小時,然後突然使用該數據庫的所有應用程序將停止工作。現在已經發生了大約2周,在此之前沒有問題。當時沒有什麼改變,當然沒有什麼會導致這個問題。插入單行需要一個小時
我已經運行了SQL Profiler來試圖弄清楚發生了什麼。它顯示了全天每秒運行的數百個查詢沒有任何問題,然後突然間出現了10分鐘的差距,只有少數查詢已經運行。當時,我發現一個已經運行了一個多小時的插入查詢。同樣的查詢(但是不同的數據)在一些情況下都被凍結了的時候被認爲有數據庫鎖定。
通常我們要做的就是重新啓動sql server服務,很明顯,它可以擺脫任何鎖並殺死任何查詢,並且一切都會重新開始。然而,它然後再次停止,有時在一小時之內,其他幾個小時之後。
這是一個簡單的插入,基本上只是說「插入表(x,y,z)從源表中選擇x,y,x」。當我運行花費一個小時的語句的選擇部分時,它不需要時間來運行(字面意思是00:00:00),所以我不太明白髮生了什麼。
我們確實得到了一段時間的錯誤,表示其中一個表可能已損壞(不是插入語句的目的地或來源)。我們在該表上運行了DBCC命令,但沒有報告任何錯誤。
我將會看看運行該語句的.net應用程序,看看是否有任何導致它的東西,但它不太可能,並且想知道是否有人以前看過類似的東西,並知道是什麼可能是原因?
在此先感謝。
這可能是與另一個腳本結合的腳本的死鎖嗎?此外,該表是否有任何觸發器或與之不一致的東西? – 2011-03-25 09:48:34
聽起來像死鎖。發生這種情況時,您是否嘗試過運行'sp_lock'? – Blorgbeard 2011-03-25 09:49:17
偶爾會遇到有關死鎖的錯誤,告訴我們查詢是死鎖的受害者,但據我所知,這已經持續了很長時間,沒有整個數據庫鎖定。 – user676437 2011-03-25 09:55:03