徵狀
假設您在 Microsoft SQL Server 2012 或 SQL Server 2014 資料庫中使用 AlwaysOn 可用性群組,且存在大量開啟的活動事務,且需要額外的記錄空間。 當記錄檔案由於下列其中一個原因而無法增長時,事務就會失敗。
-
額外的檔案空間不足
-
記錄檔已設定為不增長
-
記錄檔已達到設定的最大大小
此外,您收到下列錯誤訊息:
錯誤:9002,嚴重性:17,狀態: 9. 資料庫 ' <資料庫名稱> ' 的事務記錄日誌已滿,因為「LOG_BACKUP」。
在執行記錄備份之後,您會收到另一個9002錯誤訊息:
錯誤:9002,嚴重性:17,狀態: 9. 資料庫 ' <資料庫名稱> ' 的事務記錄日誌已滿,因為「ACTIVE_TRANSACTION」。
在另一個記錄備份之後,您會收到另一個9002錯誤訊息,後接5901錯誤訊息:
錯誤:9002,嚴重性:17,狀態: 9. 資料庫 ' <資料庫名稱> ' 的事務記錄日誌已滿,因為「AVAILABILITY_REPLICA」。
無法在資料庫 <資料庫名稱> 中寫入檢查點記錄,因為記錄空間不足。 請與資料庫管理員聯繫,以截斷記錄,或將更多空間分配給資料庫記錄檔。錯誤:5901,嚴重性:16,狀態: 1. 屬於資料庫 ' <資料庫名稱> ' 的一個或多個恢復單元無法產生檢查點。 這通常是由於缺少系統資源(例如磁片或記憶體),或是在某些情況下由於資料庫損毀所造成。 請檢查錯誤記錄中先前的專案,以取得有關此失敗的詳細資訊。
在事務復原期間,當後續的檢查點或記錄備份之後,您可能會收到下列錯誤訊息:
Msg 3052、Level 16、State 1、Line 4BACKUP 記錄無法記錄資料庫 ' <資料庫名稱>」的更新。 需要進行後續的記錄備份,才能將備份點從「<lsn id 1>」移至「<lsn id 2>」之後,才可以記錄這些空間。
當您收到這些訊息時,您就無法再將任何新的事務提交到資料庫,而且您無法增加記錄檔案或新增另一個記錄檔。
解決方案
這個問題首先是在下列 SQL Server 累積更新中修正:
每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 我們建議您下載並安裝最新的 SQL Server 累積更新:
因應措施
您可以使用下列因應措施來截斷記錄並繼續活動。
-
檢查每個次要複本,確認次要複本 last_hardened_lsn (請參閱 sys.dm_hadr_database_replica_states)與主要複本 last_hardened_lsn相符。 若要執行此動作,您可以執行下列已連接主要複本實例的查詢
SELECT ags.name as AGGroupName, ar.replica_server_name as InstanceName, hars.role_desc, db_name(drs.database_id)as DBName, drs.last_hardened_lsn, drs.log_send_queue_size, drs.synchronization_state_desc as SyncState, ar.availability_mode_desc as SyncMode, CASE drs.is_local WHEN 1 THEN drs.database_id ELSE NULL END as database_id FROM sys.dm_hadr_database_replica_states drs LEFT JOIN sys.availability_replicas ar ON drs.replica_id = ar.replica_id LEFT JOIN sys.availability_groups ags ON ar.group_id = ags.group_id LEFT JOIN sys.dm_hadr_availability_replica_states hars ON ar.group_id = hars.group_id and ar.replica_id = hars.replica_id WHERE db_name(drs.database_id) = '<database name>'
-
在主要複本上
-
從可用性群組中移除資料庫。
-
重新新增資料庫至 [可用性] 群組。
-
-
在每個次要複本上
-
重新新增資料庫至 [可用性] 群組。
-
透過從可用性群組中移除資料庫,就會立即截斷其記錄,並釋放記錄空間。如果每個次要複本的 last_hardened_lsn 都與主要複本完全相同,而且在從可用性群組中移除資料庫並在每個次要資料庫上重新新增資料庫期間,不會進行記錄備份,則會成功地重新新增副複本,而不會發生任何錯誤,或必須在副上還原記錄備份。如果副複本與主要複本不是最新的,而且您必須先將資料庫從可用性群組中移除,然後再將它重新新增至可用性群組,或將資料庫放在次要複本上,然後使用完整與事務記錄資料庫備份重新播種該資料庫,即可將其還原。
狀態
Microsoft 已確認<適用於>一節所列的 Microsoft 產品確實有上述問題。