我通常在我的存儲過程中使用完全顯式的事務(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