Sign in with Microsoft
Sign in or create an account.
Hello,
Select a different account.
You have multiple accounts
Choose the account you want to sign in with.

徵狀

假設您在 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 累積更新:

因應措施

您可以使用下列因應措施來截斷記錄並繼續活動。

  1. 檢查每個次要複本,確認次要複本 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>'
  2. 在主要複本上

    • 從可用性群組中移除資料庫。

    • 重新新增資料庫至 [可用性] 群組。

  3. 在每個次要複本上

    • 重新新增資料庫至 [可用性] 群組。

透過從可用性群組中移除資料庫,就會立即截斷其記錄,並釋放記錄空間。如果每個次要複本的 last_hardened_lsn 都與主要複本完全相同,而且在從可用性群組中移除資料庫並在每個次要資料庫上重新新增資料庫期間,不會進行記錄備份,則會成功地重新新增副複本,而不會發生任何錯誤,或必須在副上還原記錄備份。如果副複本與主要複本不是最新的,而且您必須先將資料庫從可用性群組中移除,然後再將它重新新增至可用性群組,或將資料庫放在次要複本上,然後使用完整與事務記錄資料庫備份重新播種該資料庫,即可將其還原。

狀態

Microsoft 已確認<適用於>一節所列的 Microsoft 產品確實有上述問題。

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?
By pressing submit, your feedback will be used to improve Microsoft products and services. Your IT admin will be able to collect this data. Privacy Statement.

Thank you for your feedback!

×