在SQL Server 2008 R2中。是否可以對單個更新命令執行回滾?如何回滾SQL更新命令?
我知道有其他questiones這樣的SO,但我還沒有看到一個具體的2008 R2,因此我可以得到相同的答案,如果是這樣的話,那麼我們可以關閉這個線程。
我做了一個簡單的更新沒有任何交易指令:
UPDATE myTable SET col1=somevalue WHERE....
在SQL Server 2008 R2中。是否可以對單個更新命令執行回滾?如何回滾SQL更新命令?
我知道有其他questiones這樣的SO,但我還沒有看到一個具體的2008 R2,因此我可以得到相同的答案,如果是這樣的話,那麼我們可以關閉這個線程。
我做了一個簡單的更新沒有任何交易指令:
UPDATE myTable SET col1=somevalue WHERE....
當然你也可以使用顯式的交易,如
BEGIN TRAN
UPDATE ...
ROLLBACK
,但我不認爲你是問有關?
如果你可以選擇SET IMPLICIT_TRANSACTIONS ON
那麼該命令將不會被提交或回滾,直到你明確地這樣做,但這不是默認行爲。
默認情況下,交易是汽車致力於所以當命令成功完成了更新的結果將被提交。如果更新遇到錯誤 - 包括連接被中止更新,它會自動回滾。
如果您的數據庫是完全恢復模式,你可能想嘗試讀取事務日誌,發現其行受到影響,然後恢復更新。
但是,這不是默認支持的,因爲MS存儲事務日誌在自己的格式不有據可查。
解決方案是使用諸如DBCC LOG或fn_log之類的命令或第三方工具,如ApexSQL Log,它會自動執行所有這些操作,但會附帶價格。
如果您需要更多的細節,這裏是情侶閱讀事務日誌帖子: