Sql-Server

由於簡單恢復模式中數據庫的“檢查點”,事務日誌已滿

  • December 11, 2018

對於我們在 SQL Server 2012 RTM 上的數據庫之一,

正如錯誤所說,我們幾乎無法執行任何故障排除步驟:

" 由於 ‘CHECKPOINT" 事務日誌已滿

這是一個開發數據庫,它的備份從未發生過,所以我們甚至無法選擇。

嘗試縮小日誌文件但沒有成功並得到以下錯誤:

日誌空間不足 - 由於“檢查點”導致事務日誌已滿的級聯錯誤

DBCC CHECKDB 大多只是給出錯誤,因為事務日誌由於“CHECKPOINT”而已滿

我無法將恢復模式更改為完全 - 因為“檢查點”導致事務日誌已滿,所以出現錯誤

無法備份:同樣的錯誤:

甚至嘗試分離並重新連接到其他伺服器(SQL server 2012 RTM),但同樣的錯誤:

嘗試在數據庫上手動執行 CHECKPOINT,但仍然出現相同的錯誤:

已在此處引用此文章簡單模型數據庫事務日誌已滿 ‘CHECKPOINT’

由於 ‘XTP_CHECKPOINT’ ,數據庫 ‘database_name’ 的事務日誌已滿,但沒有成功。

注意:我們沒有在目前伺服器或任何數據庫上設置複製。

請幫助,因為我無法找到根本原因並解決此問題!

謝謝!

(因為這比評論長……所以把它作為答案)

對於我們在 SQL Server 2012 RTM 上的數據庫之一。

這是你的問題。在 RTM 建構之後的連續 CU/SP中引入了許多修復。

你能用最新的 SP2 修補 sql server 嗎?修補後,檢查問題是否仍然存在。

您的問題可能是因為您的MODEL數據庫可能處於簡單恢復狀態。

如果模型數據庫設置為簡單恢復模型,並且使用者數據庫是使用模型數據庫模板的簡單恢復模型創建的,則 SQL Server 不會像假設的那樣自動截斷其日誌(在完整備份之後)。似乎 SQL Server 以某種方式將其視為處於完全恢復模式。

您可以在日誌備份下方執行(即使您的數據庫處於簡單恢復狀態 - 因為模型處於簡單恢復狀態 - 由於 RTM 中的錯誤,sql server將其視為處於完全恢復狀態

BACKUP LOG dbName
TO DISK = 'dbName_log_backup.trn'
GO

檢查此知識庫:將“模型”數據庫的恢復模型設置為“簡單”後,數據庫不遵循 SQL Server 2012 中的簡單恢復模型行為

只需確保 - 日誌文件是否設置為固定大小?如果是這樣,請嘗試將輔助日誌文件添加到數據庫,然後執行檢查點。如果所有其他方法都失敗,則重建日誌。

ALTER DATABASE <database> set  EMERGENCY 
ALTER DATABASE <database> REBUILD LOG ON (NAME='<database>',FILENAME='<filename>')
ALTER DATABASE <database> set online

引用自:https://dba.stackexchange.com/questions/101585