2009-06-08 35 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丟棄了它們。對於完整恢復模式,您需要備份日誌。

相關問題