KB3009974 - 修正:當 SQL Server AG 和記錄傳輸環境中的主要和次要複本日誌檔的磁區大小不同時,同步處理速度變慢

Applies To
SQL Server 2014 Developer SQL Server 2014 Enterprise SQL Server 2014 Standard SQL Server 2012 Enterprise SQL Server 2012 Developer SQL Server 2012 Standard SQL Server 2016 Enterprise Core SQL Server 2016 Standard SQL Server 2016 Developer SQL Server 2016 Enterprise SQL Server 2016 Web SQL Server 2016 Express

注意

套用此 Hotfix 之後,您必須在所有具有 512 位元組實體磁區大小的伺服器或複本上啟用追蹤旗標 1800 做為啟動參數,並重新啟動它們,以使此 Hotfix 正常運作。

症狀

請考慮以下案例:

  • 您可以在 Microsoft SQL Server 中啟用 AlwaysOn 可用性群組或記錄功能。

  • 在 AlwaysOn 可用性群組 (AG 中儲存主要和次要副本日誌檔的磁碟) 具有不同的磁區大小。 或者在記錄環境中,儲存記錄主要伺服器和記錄次要伺服器記錄檔的磁碟具有不同的磁區大小。 例如:

    • 主要複本記錄檔位於磁區大小為 512 位元組的磁碟上。 不過,次要副本記錄檔位於磁區大小為 4 KB (KB) 的磁碟上。
    • 主要複本記錄檔位於磁區大小為 512 位元組的內部部署本機系統上。 不過,次要複本位於磁區大小為 4 KB (KB) 的 Windows Azure儲存空間磁碟上。

在此案例中,下列錯誤訊息會記錄在 SQL Server 錯誤記錄檔中。 如果在重新啟動伺服器之前有記錄未套用到次要伺服器,則錯誤訊息可能會在重新開機後持續一段時間。

注意

有 X 個未對齊的日誌 IO,需要回復到同步 IO。 目前的 IO 已存檔 ....

此外,AG 或記錄同步處理因為同步 I/O 的緣故,執行速度非常緩慢。 如果次要副本位於 Windows Azure 儲存空間中,則完成同步處理程序所花費的時間會比預期長得多。

注意:當您同時使用磁區大小為 4 KB 的新磁碟機,以及磁區大小為 512 位元組的舊磁碟機時,就會發生這個問題。 如需有關新磁碟機的詳細資訊,請參閱 SQL Server - 新磁碟機使用 4K 磁區大小和 SQL Server - 儲存空間/VHDx 和 4K 磁區大小。

解決方式

此問題已先在下列 SQL Server 累積更新中修正。

適用於 SQL Server 2014 的累積更新 5 /zh-tw/help/3011055

SQL Server 2012 SP2 的累積更新 3 /zh-tw/help/3002049

SQL Server 2012 SP1 的累積更新 13 /zh-tw/help/3002044

在磁區大小為 512 位元組的磁碟上執行的所有伺服器複本上套用 Hotfix 並啟用追蹤旗標 1800 作為啟動參數之後,您會注意到下列檔案的大小略有增加:

  • 交易記錄檔
  • 記錄檔備份

此外,您注意到下列訊息記錄在主要伺服器的 SQL Server 錯誤記錄檔中:

注意

正在重寫資料庫 '<database name>' 的記錄尾部,以符合 4096 位元組的新磁區大小

這是一則資訊訊息,可以放心略過。

關於 SQL Server 的累積更新

SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:

因應措施

若要解決此問題,請將目的地的交易記錄檔,移至 每個實體磁區位元組數 設定為 512 位元組的磁碟機。

狀態

Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。

更多資訊

最佳作法是盡量確定所有複本上的所有磁碟 (至少所有裝載記錄檔的磁碟都具有相同的磁區大小) 。 在混合環境中,次要磁碟機的實體磁區長度為 512 位元組,而主要磁碟機的磁區大小為 4 KB,在所有具有 512 位元組實體磁區大小並重新啟動的伺服器或複本上,TF 1800 都應用作啟動旗標。 這可確保進行中的記錄建立格式使用 4 KB 的磁區大小。

如需有關 SQL Server 如何處理較大磁區大小的詳細資訊,請參閱支援部落格上的下列文章:

SQL Server – 儲存空間/VHDx 和 4K 磁區大小

您可以使用 Fsutil 命令提示字元公用程式 來判斷 每個實體磁區的位元組數 值。 如果在輸出中看不到此參數,您必須套用 知識庫文章 982018 中指定的 Hotfix。

若要確認您的磁碟機類型,請依照下列步驟執行:

  1. 在提升權限的命令提示字元使用下列命令:
    fsutil fsinfo ntfsinfo x: 注意 x 預留位置代表您要檢查的磁碟機。

  2. 使用 [每個磁區的位元組數 ] 和 [每個實體磁區的位元組數 ] 的值來判斷您擁有的磁碟機類型。 若要執行這項操作,請使用下表:

    「每個磁區的位元組數」值 「每個實體磁區的位元組數」值 磁碟機類型
    4096 4096 4K 原生
    512 4096 進階格式 (也稱為 512E)
    512 512 512 位元組原生