2013-06-19 31 views
4

我們很難追蹤我們的某個軟件解決方案中的錯誤,這些錯誤有時會導致公開交易。我們在許多網站上都有這個應用程序正在製作(閱讀:70+),而今年迄今爲止我們僅在兩個不同的位置看到過這個問題。強制一個事務從另一個連接提交?

我們遇到的問題是從常量連接打開到SQL Server的事務。使用dbcc opentran顯示有一筆交易尚未開啓。在今天的情況下,它從上午9點30分開始,然後我們在下午1點才意識到它。用連接關閉程序將導致交易被關閉/取消,並且迄今爲止所有的數據都丟失了。

使用dbcc opentran它迴應打開的交易的名稱是user_transaction。試圖用commit tran user_transaction關閉它會給出The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION.的錯誤。

我可以理解你幾​​乎從不想在沒有事先連接的知識的情況下強制執行事務,但是有什麼辦法可以這麼做嗎?在這種情況下,我們關閉了該計劃,我們失去了半天的業務價值數據。

謝謝。

+0

不幸的是,你需要跟蹤在哪裏錯過了關閉。如果事務打開時間超過一定的時間,您可以考慮使用SQL代理向您發送電子郵件。通過這種方式,您可以開始追蹤導致這種情況的原因,如果您能夠在10分鐘左右的時間內捕獲錯誤,至少結束程序的數據丟失將會小得多。 – liebs19

+1

對['KILL'](http://msdn.microsoft.com/zh-cn/library/ms173730.aspx)中的事務處於無效狀態並不重要,這就是您應該查看的內容,而不是強制提交。 –

回答

相關問題