適用対象: SQL Server 2025 (17.x) プレビュー
max ucs send boxcars
サーバー構成オプションを使用して、プライマリ レプリカからセカンダリ レプリカにメッセージを送信するために使用できる UCS ボックスカーの最大数を制御します。 このオプションは、ワイド エリア ネットワーク (WAN) 経由で Always On 可用性グループ 内のレプリカ間のデータ フローを制御する場合に役立ちます。
注
max ucs send boxcars
サーバー構成オプションは、SQL Server 2025 (17.x) プレビュー以降で使用できます。
概要
ユニバーサル 通信サービス (UCS) プロトコルは、プライマリ レプリカとセカンダリ レプリカの間でログ ブロックを送信するために、SQL Server Always On 可用性グループ によって使用されます。 UCS は、セカンダリ レプリカがプライマリ レプリカの背後にあるかどうかを判断します。これは、プライマリがセカンダリで変更が強化されたという確認を受け取るまでにかかる時間を測定することで行います。
UCS はエンドポイント間で通信しますが、セカンダリ レプリカがプライマリ レプリカからの変更の適用に追いつくことができないことを検出すると 、フロー制御 に入ります。 このプロセスは、遅延の大部分がセカンダリ レプリカでの処理に起因するため、ネットワーク ラグが原因ではない高速ローカル ネットワークに適しています。 ただし、GEO レプリケーションなどのネットワーク 遅延が大きいワイド エリア ネットワーク (WAN) 経由で UCS が通信する場合、ネットワーク待ち時間が長くなり、セカンダリ レプリカが遅れる可能性があります。 このシナリオでは、フロー制御は非効率的です。
このネットワーク ラグ シナリオに対処するには、UCS がフロー制御の開始を延期する必要があります。 これは、プライマリ レプリカからセカンダリ レプリカにメッセージを送信するために使用できる UCS ボックスカー の数の制限を変更することによって実現されます。 UCS パケットは、ネットワーク上でより効率的な伝送を可能にするためにボックスカーにグループ化されます。 UCS ボックスカーの最大数を増やすと、一度に転送できるパケットが増え、それによってフロー制御への移行が遅れます。
UCS ボックスカーを Windows レジストリでオーバーライドする
SQL Server 2022 (16.x) 以降では、初期化中に SQL Server が読み取るレジストリ値を作成することで、UCS ボックスカーの数を制御できます。
- レジストリ キー:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.<instance_name>\MSSQLServer\ServiceBroker
- 値の名前:
MaxPendingSend
- 値の型:
REG_SZ
Von Bedeutung
SQL Server は型をチェックし、想定される型でない場合は値を無視するため、REG_SZ
ではなく、REG_DWORD
として値を作成する必要があります。
このメカニズムには、いくつかの欠点があります。
データベース管理者は、SQL Server インスタンスと同じコンピューター上またはリモートでレジストリにアクセスできない可能性があります。
データベース管理者とシステム管理者は、通常、責任のセットが異なる 2 つの異なるロールであるため、アクセス許可のセットが異なります。
UCS ボックスカーを sp_configure でオーバーライドする
SQL Server 2025 (17.x) プレビュー以降では、次の考慮事項に従って、 max ucs send boxcars
サーバー構成オプションを使用して UCS ボックスカーの数を制御できます。
この設定は、高度な
sp_configure
オプションです。最小値は
256
(既定値) で、最大値は2048
。 ただし、0
の値を使用して、値を既定値にリセットできます。この構成オプションは、レジストリ設定よりも優先されます。
この設定は、SQL Server インスタンスの再起動後に有効になります。
USE master;
GO
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXEC sp_configure `max ucs send boxcars`, 1234;
RECONFIGURE;
GO
優先順位
次の表に、使用するオーバーライド メカニズムに応じた優先順位の例を示します。
規則 |
sp_configure 価値 |
レジストリ値 | 有効な値 |
---|---|---|---|
max ucs send boxcars 既定値以外の値 (つまり、256 と等しくない) は、レジストリ値よりも優先されます。 |
1024 | 2048 | 1024 |
max ucs send boxcars が既定値の 256 に設定されている場合、レジストリ値が有効になります。 |
256 | 2048 | 2048 |
max ucs send boxcars が 0 に設定されている場合は、既定値が使用されます。既定値はレジストリ値よりも優先されます。 この方法で、データベース管理者がレジストリを編集する権限を持っていない場合でも、既定値を適用できます。 |
0 | 2048 | 256 |
注釈
新しい構成を適用するには、RECONFIGURE
サーバー構成オプションを設定した後、max ucs send boxcars
を実行する必要があります。 この設定は、SQL Server インスタンスを再起動した後にのみ有効になります。
UCS ボックスカーの数に対して既定値以外の値が有効な場合、SQL Server は情報メッセージをエラー ログに記録します。 情報メッセージには、有効な値とオーバーライドのソース ( sp_configure
または registry
) が含まれています。
2024-10-08 13:38:26.11 Server UCS transport default sending capacity is overridden with the value of 1234. Override source: sp_configure. This is an informational message only. No user action is required.
メッセージの内部エラー コードが 33338
。 既定値が設定されている場合、メッセージはログに記録されません。