この修正プログラムを適用した後、512 バイトの物理セクター サイズを持つすべてのサーバーまたはレプリカでスタートアップ パラメーターとしてトレース フラグ 1800 を有効にし、再起動して、この修正プログラムを正常に動作させる必要があります。
現象
次のような状況で問題が発生します。
-
Microsoft SQL Serverで AlwaysOn 可用性グループまたは Logshipping 機能を有効にします。
-
AlwaysOn 可用性グループ (AG) のプライマリ レプリカとセカンダリ レプリカのログ ファイルを格納するディスクのセクター サイズは異なります。 または、Logshipping 環境では、Logshipping プライマリ サーバーと Logshipping セカンダリ サーバーのログ ファイルを格納するディスクのセクター サイズは異なります。 以下に例を示します。
-
プライマリ レプリカ ログ ファイルは、セクター サイズが 512 バイトのディスクにあります。 ただし、セカンダリ レプリカ ログ ファイルは、セクター サイズが 4 KB (KB) のディスク上にあります。
-
プライマリ レプリカ ログ ファイルは、セクター サイズが 512 バイトのオンプレミスのローカル システムにあります。 ただし、セカンダリ レプリカは、セクター サイズが 4 KB (KB) の Windows Azure Storage ディスク上にあります。
-
このシナリオでは、次のエラー メッセージが SQL Server エラー ログに記録されます。 サーバーを再起動する前にセカンダリに適用されていないログがあった場合、再起動後もしばらくエラー メッセージが続く可能性があります。
同期 IO にフォールバックする必要がある X のずれしたログ IO がありました。 現在の IO はファイル ...にあります。
さらに、AG または Logshipping 同期は、同期 I/O が原因で非常に遅く実行されます。 セカンダリ レプリカが Windows Azure Storage にある場合、同期プロセスを完了するのに予想よりもはるかに長い時間がかかります。
注 この問題は、4 KB のセクター サイズを持つ新しいドライブと、512 バイトのセクター サイズを持つ古いドライブの両方を使用する場合に発生します。 新しいドライブの詳細については、「SQL Server - 新しいドライブ 4K セクター サイズと SQL Server-記憶域スペース/VHDx と 4K セクター サイズを使用する」を参照してください。
解決方法
この問題は、SQL Serverの次の累積的な更新プログラムで最初に修正されました。
SQL Server 2014 /en-us/help/3011055 の累積的な更新プログラム 5
SQL Server 2012 SP2 /en-us/help/3002049 の累積的な更新プログラム 3
SQL Server 2012 SP1 /en-us/help/3002044 の累積的な更新プログラム 13
修正プログラムを適用し、セクター サイズが 512 バイトのディスク上で実行されているすべてのサーバー レプリカでスタートアップ パラメーターとしてトレース フラグ 1800 を有効にすると、次のファイルのサイズが小さく増加することがわかります。
-
トランザクション ログ ファイル
-
ログ バックアップ
さらに、プライマリ サーバーのSQL Server エラー ログに次のメッセージが記録されていることがわかります。
データベース '<データベース名>' のログの末尾は、新しいセクター サイズの 4096 バイトと一致するように書き換えられています
これは、無視しても問題のない情報メッセージです。
SQL Serverの各新しい累積的な更新プログラムには、すべての修正プログラムと、以前の累積的な更新プログラムに含まれていたすべてのセキュリティ修正プログラムが含まれています。 SQL Serverの最新の累積的な更新プログラムを参照してください。
回避策
この問題を回避するには、移動先のトランザクション ログ ファイルを、 物理セクターあたりのバイト数 が 512 バイトに設定されているドライブに移動します。
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
詳細情報
ベスト プラクティスとして、すべてのレプリカ上のすべてのディスク (少なくともログ ファイルをホストするすべてのディスク) のセクター サイズが同じであることを確認してください。 セカンダリに 512 バイトの物理セクターがあり、プライマリのセクター サイズが 4 KB である混合環境では、TF 1800 は、512 バイトの物理セクター サイズを持つすべてのサーバーまたはレプリカのスタートアップ フラグとして使用し、再起動する必要があります。 これにより、進行中のログ作成形式で 4 KB のセクター サイズが使用されます。
より大きなセクター サイズSQL Serverのしくみの詳細については、サポート ブログの次の投稿を参照してください:
SQL Server-記憶域スペース/VHDx と 4K セクター サイズ
Fsutil コマンド プロンプト ユーティリティを使用して、物理セクターあたりのバイト数の値を決定できます。 このパラメーターが出力に表示されない場合は、 KB アーティクル 982018で指定されている修正プログラムを適用する必要があります。
お持ちのドライブの種類を確認するには、次の手順に従います。
-
管理者特権のコマンド プロンプトで次のコマンドを実行します。
Fsutil fsinfo ntfsinfo x: 注 x プレースホルダーは、確認するドライブを表します。
-
[ セクターあたりのバイト数] と [ 物理セクターあたりのバイト数] の値を使用して、使用しているドライブの種類を決定します。 これを行うには、次の表を使用します。
"セクターあたりのバイト数" 値
"物理セクターあたりのバイト数" 値
ドライブの種類
4096
4096
4K ネイティブ
512
4096
Advanced Format (512E とも呼ばれます)
512
512
512 バイトネイティブ