修正: 錯誤 9002 和錯誤 3052 當您嘗試新增或備份記錄檔在 SQL Server 2012年或 SQL Server 2014

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:3095156
徵狀
假設您在 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。
一或多個屬於資料庫的復原單位 '資料庫名稱>' 無法產生一個檢查點。這通常被因為缺乏系統資源,例如磁碟或記憶體,或在某些情況下,由於資料庫損毀。請檢查先前的項目,關於此錯誤的詳細資訊錯誤記錄檔中。
接下來的檢查點或記錄檔備份,則會採取交易的復原期間,您可能會收到下列錯誤訊息:
訊息 3052,層次 16,狀態 1,第 4 行
已無法記錄資料庫的更新備份記錄 '資料庫名稱>'.後續的記錄檔備份,則必須以前進備份點,從 'LSN 識別碼 1>' 到 'LSN 識別碼 2>' 記錄檔空間可供記錄它們之後。
當您收到這些訊息時,你不再能夠送出至資料庫,任何新的交易,您無法使記錄檔成長,或新增另一個記錄檔。

解決方案
下列的累積更新的 SQL Server,已先修正問題: 建議: 安裝最新的 SQL Server 累積更新
每個新的累積更新的 SQL Server 包含的所有 hotfix 與安全性修正,全都包含在先前的累積更新。我們建議您下載並安裝最新的累積更新 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 產品的問題。

警告:本文為自動翻譯

內容

文章識別碼:3095156 - 最後檢閱時間:10/19/2015 18:51:00 - 修訂: 2.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbsurveynew kbfix kbexpertiseadvanced kbmt KB3095156 KbMtzh
意見反應