Se utilizan los puertos TCP del protocolo Mirroring de la base de datos. ¿Un valor predeterminado, uno dinámico?

8

Cuando se ejecuta debajo de la consulta en la réplica primaria / secundaria de un SQL Server Always On Availability Group ™

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

Se muestran dos puertos tcp locales para el protocolo de creación de reflejo de la base de datos, 5022y63420

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

Se 5022espera el puerto, ya que este es el configurado como el punto final de duplicación.

El otro parece ser un puerto dinámico, ¿por qué y para qué se utiliza este?

¿Podría tener que ver con el hecho de que uno muestra un alto número de lecturas ( 5022) y el otro muestra un alto número de escrituras ( 63420).

Versión de compilación: 13.0.5264.1

Randi Vertongen
fuente

Respuestas:

7

Cuando una aplicación establece una conexión TCP, especifica un puerto para el puerto de entrada (recepción) y utiliza un puerto (algo) seleccionado al azar para la salida (fuente o envío). El puerto de entrada para la replicación AG es 5022 de forma predeterminada, por lo que todo el tráfico de replicación se envía al puerto 5022. En consecuencia, verá que las lecturas de la red se producen en el puerto 5022, ya que SQL Server escucha en el puerto 5022 y lee los paquetes que se envían a ese puerto .

El puerto de salida, que se selecciona al azar (más o menos), es el puerto desde el que se envía. En consecuencia, verá las escrituras asociadas con el puerto aleatorio (63420 en su ejemplo), ya que SQL Server está escribiendo datos en este puerto para enviarlos en la conexión.

Vea Cómo se determinan los puertos de origen ... para más

Tony Hinkle
fuente