在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