SQL Server 2022 分散型可用性グループにおける同期失敗


こんにちは。SQL Server サポート チームです。

 

今回は、分散型可用性グループにおける同期が突然失敗する事象についてご紹介します。

 

事象

SQL Server 2022 で分散型可用性グループを構成し FILESTREAM を使用している環境において、正常に稼働していた分散型可用性グループが突如同期に失敗し、同期の状態が NOT_HEALTHY になります。

 

<事象発生構成>

・SQL Server 2022

・分散型可用性グループ

・FILESTREAM

 

原因

前提として、FILESTREAM の機能はログの順序性が重要になっています。

SQL Server 2022 より、パフォーマンス向上を目的に分散型可用性グループ間で、下記の弊社公開情報に記載している通り複数の TCP 接続を使用できるようになりました。

 

SQL Server 2022 の新機能により複数の TCP セッションからログを転送することで、FILESTREAM の内部的なログの順序がずれてしまうことで、同期に異常が発生することが原因です。

 

SQL Server 2022 (16.x) の新機能

– 可用性

https://learn.microsoft.com/ja-jp/sql/sql-server/what-s-new-in-sql-server-2022#availability

*****

分散型可用性グループ       – tcp 待機時間が長いリモート リンク間のネットワーク帯域幅使用率を向上させるために、複数の TCP 接続を使用するようになりました。

*****

 

対処策

本事象の対処策は、トレースフラグ 5597 を設定することです。

トレースフラグ 5597 は、SQL Server 2022の新機能(分散型可用性グループにおける複数TCP使用) を無効するのみで、以前のバージョンと同等な動作となり、他への影響はありません。

 

変更手順

トレースフラグ 5597 の設定方法は、以下の通りです。

 

トレースフラグ設定方法

——————————–

1) SQL Server Configuration Manager (構成マネージャー)を起動します。

2) SQL Serverのサービス-> SQL Server (MSSQLSERVER もしくは インスタンス名) を右クリックし、プロパティを開きます。

3) [起動時のパラメーター] タブの[起動時のパラメーターの指定] ボックスに下記の値を入力し、[追加] をクリックします。

-T5597