症狀
請考慮以下案例:
- 你使用的是 Microsoft SQL Server 2016、2014 或 2012。
- 你有一個屬於 AlwaysOn 可用性群組的資料庫。
- 在主副本上,你會縮小資料庫檔案以縮小它們的大小。
- 主要副本會將交易日誌中記錄的所有變更傳送到次要副本。
- 在次要副本上,重做執行緒會將交易日誌中的變更套用到屬於可用性群組的資料庫。
在此情境中,複製品會被暫停。
此外,您可能會收到類似以下錯誤訊息的訊息:
注意
<時間戳> 記 spid41s 錯誤:3456,嚴重度:21,狀態:1。
<時間戳> 記 spid41s 無法重做日誌記錄 (#) ,交易 ID (#) ,頁面 (#) ,資料庫 '<dbname>' (資料庫 ID #) 。 頁碼:LSN = (#) ,分配單位 = #,類型 = #。 日誌:操作代碼 = #,上下文 #,PrevPageLSN: (#) 。 從資料庫備份還原,或修復資料庫。
<時間戳記> spid41s AlwaysOn 可用性群組資料庫「<dbname>」的資料移動因以下原因被暫停:「system」 (Source ID 2;來源串:「SUSPEND_FROM_REDO ) 。 若要恢復資料庫中的資料移動,您需要手動恢復資料庫。 有關如何恢復可用性資料庫的資訊,請參閱 SQL Server Books Online。
<時間戳>記 spid41s 錯誤:3313,嚴重度:21,狀態:2.<時間戳記> spid41s 在重新執行資料庫中已記錄的操作<>時,日誌記錄 ID (#) 發生錯誤。 通常,該特定失敗會先在 Windows 事件日誌服務中記錄為錯誤。 從完整備份還原資料庫,或修復資料庫。
原因
當重做過程中,若資料庫引擎在系統頁面 (GAM、PFS) 遇到順序不順的 LSN 時,就會出現此問題。
解決方式
此問題首次在以下 SQL Server 累積更新中被修正:
- 累積更新1 for SQL Server 2016
- Cumulative Update 8 for SQL Server 2014 SP1
- 累積更新6 for SQL Server 2012 SP3
- SQL Server 2012 SP2 累積更新 15
建議:安裝最新的 SQL Server 累積更新
每次新的 SQL Server 累積更新都包含了之前累積更新中包含的所有熱修補與安全修補。 我們建議您下載並安裝最新的 SQL Server 累積更新:
- SQL Server 2016 最新累積更新
- SQL Server 2014 SP1 的最新累積更新
- SQL Server 2012 SP3 的最新累積更新
- SQL Server 2012 SP2 的最新累積更新
這次更新防止了這個問題發生。 如果問題已經發生,請依照以下步驟重新加入 AlwaysOn 可用性群組:
- 移除現有的 AlwaysOn 次要副本。
- 對受影響的資料檔案執行以下指令,移除資料庫中未分配的空間:
DBCC 縮縮檔案 (<file_id>,僅 TRUNCATEONLY) - 備份資料庫和日誌檔案。
- 還原 AlwaysOn 次要副本的資料庫和日誌。
- 加入 AlwaysOn 可用性群組。
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。
參考資料
了解 Microsoft 用來說明軟體更新的術語。