2011-02-12 35 views
8

可能重複:
What happens to an uncommitted transaction when the connection is closed?的SQL Server的連接損失

如果失去在交易中間的連接,會發生什麼?

我想,如果事務從未提交併且可以再次執行,但是......有沒有辦法將連接並將其回滾到已保存的點並繼續執行已有的事務?

親切的問候。

+0

哪些連接,你說話的。只有連接到sql-server或您的客戶端到服務器的網絡連接。這甚至可能使用某些VPN連接等。 –

+0

與sql-server的連接。 – vtortola

+0

相關:http://stackoverflow.com/q/1539564/1569 –

回答

8

如果在事務處理中失去連接,則不能再從其他連接重新輸入此事務。如果連接被刪除,SQL Server將自動回滾所有未提交的事務。因此,如果發生這種情況,只需重新連接,並且您會發現數據庫處於交易開始前的相同狀態(假設當然沒有其他用戶可能已經在其間改變了它)。

2

通常,該交易將被回滾。無論是客戶端斷開的CommandTimeout或服務器重新啓動。

這是原子在ACID

「撿」它離開的地方就沒有意義

事務的能力
  • 個碰巧/交易LSN會失靈其他交易
  • 內部結構被改變作爲寫(索引等)的一部分/數據庫不一致
+0

長壽命TXN沒有*根本*問題。 DBMS可以像長期運行的「普通」TXN一樣實施它們。即它將不得不保留所有TXN持有/需要的鎖/行版/ ...。唯一的事情是:這是非常不切實際的。墜毀的應用程序需要手動清理,這會佔用服務器資源,並且在大多數情況下使用SQL數據庫的情況下,提交數小時甚至數天前的TXN的機會將很少到不存在。 –