Verwendete TCP-Ports des Datenbankspiegelungsprotokolls. Ein Standard, eine Dynamik?

8

Wenn Sie die folgende Abfrage auf dem primären / sekundären Replikat einer SQL Server Always On Availability Group ™ ausführen

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

Zwei lokale TCP - Ports zeigen sich für die Datenbankspiegelung Protokoll 5022&63420

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

Der 5022Port wird erwartet, da dieser als Spiegelungsendpunkt konfiguriert ist.

Der andere scheint ein dynamischer Port zu sein, warum und wofür wird dieser verwendet?

Könnte es damit zu tun haben, dass einer eine hohe Anzahl von Lesevorgängen ( 5022) und der andere eine hohe Anzahl von Schreibvorgängen ( 63420) anzeigt?

Build-Version: 13.0.5264.1

Randi Vertongen
quelle

Antworten:

7

Wenn eine Anwendung eine TCP-Verbindung herstellt, gibt sie einen Port für den eingehenden (Empfangs-) Port an und verwendet einen (etwas) zufällig ausgewählten Port für den ausgehenden (Quelle oder Senden) Port. Der eingehende Port für die AG-Replikation ist standardmäßig 5022, sodass der gesamte Replikationsverkehr an Port 5022 gesendet wird. Dementsprechend werden die Netzwerklesevorgänge an Port 5022 angezeigt, da SQL Server Port 5022 überwacht und Pakete liest, die an diesen Port gesendet werden .

Der ausgehende Port, der zufällig ausgewählt wird (mehr oder weniger), ist der Port, von dem er gesendet wird. Dementsprechend sehen Sie die Schreibvorgänge, die dem zufälligen Port zugeordnet sind (in Ihrem Beispiel 63420), da SQL Server Daten an diesen Port schreibt, um sie über die Verbindung zu senden.

Siehe Wie sind Quellports bestimmt ... für mehr

Tony Hinkle
quelle