2009-06-08 58 views
7

我通常在我的存储过程中使用完全显式的事务(BEGIN TRANSACTION .... COMMIT)。我只是跑过一个旧的,而不是在代码中的某些地方使用“CHECKPOINT”。CHECKPOINT是否与TSQL中的COMMIT一样工作?

这不会做同样的事情吧?即使数据库处于简单模式,即使有大量的CHECKPOINTS卡在中间,整个事件仍然会作为一个大事务运行?

回答

7

CHECKPOINT是不同的,并且独立于提交/回滚。

本文演示“SQL Server 2000 I/O Basics”(对于SQL Server 2005等仍然正常)。

  • 您可以检查点并写入到磁盘,但随后回滚

  • 的开始/提交是无关的恢复模式(完全,简单,大容量日志记录)。 TXN必须作为一个完成或失败。

  • 如果发生电源故障,数据可能在磁盘上,因为CHECKPOINT但未提交,因此会作为数据库启动的一部分回滚。

在过去的日子里,它被用于简单恢复模型的try and "empty" the log of committed entries。 CHECKPOINT丢弃了它们。对于完整恢复模式,您需要备份日志。

相关问题