在sql server中事務回滾的機制是什麼?在sql server中事務回滾的機制是什麼?
回答
數據庫中的每個更新都會首先向包含更改描述的日誌寫入條目。例如。如果將列值從A更新爲B,則日誌將包含更新的記錄,如下所示:在表T中,C列從A更改爲B,記錄的密鑰K通過ID爲I的事務進行記錄。如果回滾事務時,引擎將開始掃描日誌以查找事務完成的工作記錄,並撤銷該工作:當它找到從A更新爲B的記錄時,會將該值更改回A.插入將被撤消通過刪除插入的行。通過插回行刪除將被撤消。這在Transaction Log Logical Architecture和Write-Ahead Transaction Log中有描述。
這是高層次的解釋,確切的內部細節如何發生這種情況,對於外行人而言是沒有文件證明的,不受您的檢查或更改。
因此,關於無證的正確,我有一個母馬試圖解碼LOP_MODIFY_COLUMNS :) – Andrew 2010-02-22 10:34:58
看一看ROLLBACK TRANSACTION (Transact-SQL)
回滾顯式或隱 交易到 交易的開始,或以內部 事務保存點。
在它是怎麼做的,所有的事務中的數據修改存儲在事務日誌中,有額外的空間還保留在日誌中撤銷記錄中,因爲它具有回滾事件術語。 每個事務日誌都有足夠的信息來反轉已做的更改,以便它可以在需要時撤消更改。 (除了重播它們在DR方案)
如果我們舉一個簡單的刪除操作爲例(因爲我已經decoded that here作爲日誌內容的一個示例)被刪除存儲在事務日誌條目中記錄的LOP_DELETE_ROWS和一些不平凡的努力,你可以解碼和演示整個行是在日誌條目。
如果要回滾事務,將使用日誌中保留的撤消空間,並重新插入該行。撤銷空間保留的原因是爲了確保事務日誌不能在事務處理完成時被填滿,從而無法完成或回滾空間。
感謝Andrew的幫助。 如何從日誌表中獲取存儲的數據? – 2010-02-21 14:06:03
在查看它的過程中,select * from :: fn_dblog(null,null)就實際解釋而言,你真的無法做到 - 它在任何實際的形式中都不是人類可讀的。有第三方工具可以讀取日誌,或者您可以閱讀奇怪的條目以獲得「興趣/理解」的視角,但是在該級別上沒有任何關於該主題的文檔 – Andrew 2010-02-21 14:08:16
- 1. SQL Server事務回滾
- 2. SQL Server回滾事務
- 3. SQL-Server事務回滾
- 4. 什麼是SQL Server implict事務?
- 5. 什麼是在Postgres中回滾事務的好方法
- 6. SQL Server Management Studio中用於回滾的腳本是什麼?
- 7. 如何在sql server中提交和回滾事務?
- 8. 回滾.net事務的最佳方式是什麼?
- 9. 爲什麼是事務回滾,如果它在Rails的
- 10. SQL Server中嵌套事務的隔離範圍是什麼?
- 11. SQL事務不回滾
- 12. SQL Server 2008中的事件機制
- 13. 如果事務在SQL Server中失敗,觸發器是否會回滾?
- 14. SQL Server必須做什麼內置的機制閃回查詢?
- 15. 強制回滾事務導致嵌套事務也回滾?
- 16. 僅在一列上回滾事務 - SQL Server 2008
- 17. 爲什麼SQL事務沒有被回滾?
- 18. 的SQL Server回滾
- 19. 什麼是localdb SQL Server的「服務器」?
- 20. 在C#.net中處理跨SQL Server的事務的最佳方式是什麼?
- 21. 什麼是在SQL Server
- 22. 什麼是SQL Server
- 23. 什麼是SQL Server
- 24. 回滾事務
- 25. 無法獲取SQL Server 2012事務回滾
- 26. TSQL - 事務回滾 - PAGEIOLATCH_EX等待類型 - SQL SErver 2005
- 27. SQL Server事務回滾或使用Petapoco提交?
- 28. 如何回滾或SQL Server提交事務
- 29. SQL Server事務
- 30. 回滾對SQL Server中表數據類型的影響是什麼?
模棱兩可的問題,你只是指什麼語法,或者它是如何實際執行的,即通過事務日誌。 – Andrew 2010-02-21 12:18:01
我想知道它是如何做到的,我知道它的語法。 – 2010-02-21 12:25:20