我通常在我的存储过程中使用完全显式的事务(BEGIN TRANSACTION .... COMMIT)。我只是跑过一个旧的,而不是在代码中的某些地方使用“CHECKPOINT”。CHECKPOINT是否与TSQL中的COMMIT一样工作?
这不会做同样的事情吧?即使数据库处于简单模式,即使有大量的CHECKPOINTS卡在中间,整个事件仍然会作为一个大事务运行?
我通常在我的存储过程中使用完全显式的事务(BEGIN TRANSACTION .... COMMIT)。我只是跑过一个旧的,而不是在代码中的某些地方使用“CHECKPOINT”。CHECKPOINT是否与TSQL中的COMMIT一样工作?
这不会做同样的事情吧?即使数据库处于简单模式,即使有大量的CHECKPOINTS卡在中间,整个事件仍然会作为一个大事务运行?
检查点只是将脏页面写入磁盘,而不是完全相同的东西。 http://msdn.microsoft.com/en-us/library/ms188748.aspx
号
CHECKPOINT是不同的,并且独立于提交/回滚。
本文演示“SQL Server 2000 I/O Basics”(对于SQL Server 2005等仍然正常)。
您可以检查点并写入到磁盘,但随后回滚
的开始/提交是无关的恢复模式(完全,简单,大容量日志记录)。 TXN必须作为一个完成或失败。
如果发生电源故障,数据可能在磁盘上,因为CHECKPOINT但未提交,因此会作为数据库启动的一部分回滚。
在过去的日子里,它被用于简单恢复模型的try and "empty" the log of committed entries。 CHECKPOINT丢弃了它们。对于完整恢复模式,您需要备份日志。
这就是我的想法。现在修改代码... – BradC 2009-06-08 19:31:33