2011-10-08 115 views
0

我正在使用SQL Server 2005,SQL Server Studio客戶端。我有一個很長的存儲過程(它做了一堆表連接,一些刪除,一些插入和一些更新)定期運行(大約每2分鐘)。存儲過程/查詢永久執行(不完成或超時)

當我有了這個sp後,我發現我的數據庫有時沒有響應(當SP沒有運行時發生了幾次,並且在SP運行期間發生了很多次)。當數據庫沒有響應時,我無法從SQL Server Studio客戶端打開新的連接,如果我運行查詢/ sp狀態將會運行並保持永久,直到我手動重置控制面板中的SQL服務admin-工具。

你見過類似的問題嗎?

難道是因爲我新創建的SP做了太多事情導致DB崩潰?

+0

所以這是一個Windows服務應用程序?我認爲你的SP的某處存在一個問題,你需要優化... – Crimsonland

+0

這是一個很長的SP,所以我可能不應該在這裏發佈它。但是我應該怎樣看待改進? – Johnyy

回答

0

聽起來像你的SP可能會造成鎖。您可以使用SQL Profiler嘗試深入挖掘可能發生的事情。下面是提供進一步信息的鏈接 -

http://www.simple-talk.com/sql/learn-sql-server/how-to-track-down-deadlocks-using-sql-server-2005-profiler/

+0

我沒有明確使用任何鎖。我還會遇到鎖定問題嗎? – Johnyy

+0

數據庫管理系統使用鎖定,除非你明確地告訴它不要,即使這樣,它仍然可以使用鎖定來保持數據的一致性。 – RyanHennig

0

幾個更快速提示:

  • 可以使用sp_who2命令查看數據庫當前的會話,並確定該SP被阻塞,或阻止其他進程。
  • 檢查SP的預計執行計劃,並查找緩慢的來源,如表掃描。
  • 您的SP可能會在單個事務中進行太多更改並填寫事務日誌或導致事務日誌增長。檢查數據庫的恢復模式,以及是否定期進行備份,以便可以重用事務日誌空間。考慮將大的修改分批成更小的塊。
+0

當數據庫緩慢完成時,它不會響應任何查詢,我懷疑sp_who2會返回任何東西,但我會嘗試它。謝謝。 – Johnyy

+0

如果SP正在鎖定表,那麼在提交SP事務之前,針對這些表的任何查詢都不會返回結果。如果sp_who2不能同時工作,那將會很奇怪。 – RyanHennig

+0

但是在任何表上都沒有明確的鎖。 DBMS會做任何自動鎖定以確保數據的完整性嗎? – Johnyy