web-dev-qa-db-ja.com

データベースミラーリングプロトコルTCP使用されるポート。1つのデフォルト、1つの動的?

SQL Server Always On可用性グループ™のプライマリ/セカンダリレプリカでクエリの下で実行する場合

SELECT DISTINCT local_tcp_port,protocol_type,num_reads,num_writes
FROM sys.dm_exec_connections 
WHERE local_net_address is not null;

データベースミラーリングプロトコル用に2つのローカルTCPポートが表示される502263420

Server Name local_tcp_port  protocol_type       num_reads   num_writes
ServerName  5022            Database Mirroring  102942598   5
ServerName  63420           Database Mirroring  5           89655349

5022ポートは、ミラーリングエンドポイントとして構成されているポートであるため、想定されています。

もう1つは動的ポートのようですが、なぜ、何のためにこれを使用するのですか?

1つは多数の読み取り(5022)を示し、もう1つは多数の書き込み(63420)を示しているという事実と関係があるのでしょうか。

ビルドバージョン:13.0.5264.1

8
Randi Vertongen

アプリケーションがTCP接続を確立すると、インバウンド(受信)ポートにポートを指定し、アウトバウンド(ソース、または送信)に(やや)ランダムに選択されたポートを使用します。インバウンドポートAGレプリケーションの場合、デフォルトでは5022であるため、すべてのレプリケーショントラフィックはポート5022に送信されます。したがって、SQL Serverがポート5022をリッスンし、そのポートに送信されるパケットを読み取っているときに、ポート5022でネットワーク読み取りが行われていることがわかります。

ランダムに(多かれ少なかれ)選択される送信ポートは、送信元のポートです。したがって、SQL Serverが接続に送信するためにこのポートにデータを書き込んでいるため、ランダムポート(例では63420)に関連付けられた書き込みが表示されます。

詳しくは 送信元ポートの決定方法... を参照してください

7
Tony Hinkle