1. 錯誤詳情 有一次在手動執行資料庫完整備份時遇到如下錯誤: 執行多次都是這個錯誤信息。 提示無法生成檢查點,原因可能是由於系統資源(如磁碟或記憶體空間)不足或者有時是由於資料庫損壞而造成的。 我們檢查資料庫資源可以排除磁碟資源不足的情況。 2.檢查點相關知識 事務日誌、數據文件 和 checkpo ...
1. 錯誤詳情
有一次在手動執行資料庫完整備份時遇到如下錯誤:
執行多次都是這個錯誤信息。
提示無法生成檢查點,原因可能是由於系統資源(如磁碟或記憶體空間)不足或者有時是由於資料庫損壞而造成的。
我們檢查資料庫資源可以排除磁碟資源不足的情況。
2.檢查點相關知識
事務日誌、數據文件 和 checkpoint的關係。
在SQL Server中,進行insert, update, delete時,數據並沒有直接寫入資料庫對應的mdf文件中,而是寫入了緩存里, 這時,就要提到一個非常重要機制:CheckPoint,它主要作用是把緩存中的數據寫入mdf文件中。
可以用下麵的這個經典圖來說明:
3.觸發CheckPoint檢查點的事件
1.在資料庫備份之前,資料庫引擎會自動執行檢查點,以便在備份中包含對資料庫頁的全部更改。
2.日誌的活動部分超出了伺服器在 recovery interval 伺服器配置選項中指定的時間內可以恢復的大小。
3.日誌的 70% 已滿,並且資料庫處於日誌截斷模式。
4.停止伺服器也會在伺服器上的每個資料庫中發出一個檢查點命令。
4.手動執行檢查點
所以這個錯誤很可能就是備份時出現了檢查點的問題,那麼我們手動執行一次檢查點。
通常,我們很少需要手動執行checkpoint指令,checkpoint的語法為 :CHECKPOINT [ checkpoint_duration ],checkpoint_duration 為完成該checkppoint所需的秒數。 正常情況下,我們不會指定checkpoint_duration 該值,而是用資料庫自動調整的檢查點持續時間,以降低對資料庫的性能影響。 因為資料庫在執行checkpoint的時候,臟頁數、修改數據的活動事務以及指定實際持續時間checkpoint_duration,都會影響資源的分配情況,假設指定了checkpoint_duration的值為50s,而正常情況下完成這個操作需要150s,那麼這個時候,資料庫為了滿足指定的checkpoint_duration 50s,就會比正常情況下,分配更多的資源給該指令運行,那麼就會影響到正常情況下的其他操作對資源的利用了。5.效果驗證
運行了一下checkpoint 好了。
嘻嘻