2011-04-01 76 views
0

我有一個數據庫,其中包含兩個表,這些表使用存儲過程插入數據的並行進程填充數據。 sql服務器實際上使用了所有的物理內存,並且我注意到有些表丟失了數據,當我發現數據時,我發現由於超時錯誤而沒有插入數據,因爲我沒有對此進行說明。有人告訴我,在這個應用程序,它看起來如下sql server - 使用存儲過程使用服務器上所有內存的存儲過程的數據庫

spid status login hostname blkby dbname command ...... 

738 sleeping sa  R120   .  FeedsRS AWAITING COMMAND 
739 sleeping sa  R120   .  FeedsRS AWAITING COMMAND 
740 sleeping sa  R120   .  FeedsRS AWAITING COMMAND 

現在有這些大約800,我不知道這意味着什麼相關的所有交易運行EXEC who2和期待。如果事務被鎖定,是否有辦法在沒有數據問題的情況下結束它們,同時我添加了代碼來處理超時錯誤。我甚至不確定這是否是問題,但是我也應該將鎖定超時設置爲合理值而不是0默認值。 任何想法讚賞。

回答

1

可能之一:

  • 您不關閉連接
  • 你的交易差的處理

和SQL Server將默認使用最大內存:這是不是泄漏或一個錯誤。

要檢查是否有打開的事務

SELECT * FROM sys.sysprocesses WHERE open_tran > 0 
+0

它表明沒有開放transactions..what這是不是意味着,感謝您迴應 – vbNewbie 2011-04-01 18:24:35

+0

我認爲連接沒有被關閉... – vbNewbie 2011-04-01 18:24:58

+0

是值得打開和關閉每個事務的連接數有幾百個,下一個事務處理需要3秒才能完成...並且整個過程始終運行 – vbNewbie 2011-04-01 18:32:42

相關問題