web-dev-qa-db-fra.com

Protocole de mise en miroir de bases de données TCP ports utilisés. Un par défaut, un dynamique?

Lors de l'exécution de la requête ci-dessous sur la réplique principale/secondaire d'un groupe de disponibilité 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;

Deux ports TCP locaux s'affichent pour le protocole de mise en miroir de bases de données, 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

Le 5022 port est attendu, car il s'agit de celui configuré comme point de terminaison de mise en miroir.

L'autre semble être un port dynamique, pourquoi et à quoi sert-il?

Cela peut-il avoir à voir avec le fait que l'on affiche un nombre élevé de lectures (5022) et l'autre affichant un nombre élevé d'écritures (63420).

Version de construction: 13.0.5264.1

8
Randi Vertongen

Lorsqu'une application établit une connexion TCP, elle spécifie un port pour le port entrant (réception) et utilise un port (quelque peu) choisi au hasard pour le trafic sortant (source ou envoi). Le port entrant pour la réplication AG est 5022 par défaut, donc tout le trafic de réplication est envoyé vers le port 5022. En conséquence, vous voyez les lectures réseau se produire sur le port 5022, car SQL Server écoute sur le port 5022 et lit les paquets qui sont envoyés sur ce port.

Le port sortant, qui est sélectionné au hasard (plus ou moins), est le port à partir duquel il est envoyé. En conséquence, vous voyez les écritures associées au port aléatoire (63420 dans votre exemple), car SQL Server écrit des données sur ce port pour être envoyées sur la connexion.

Voir Comment les ports source sont-ils déterminés ... pour plus

7
Tony Hinkle