Portas TCP do protocolo de espelhamento de banco de dados usadas. Um padrão, um dinâmico?

8

Ao executar abaixo da consulta na réplica primária / secundária de um Grupo de Disponibilidade Always On do SQL Server

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

Duas portas tcp locais são exibidas para o protocolo de espelhamento de banco de dados, 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

A 5022porta é esperada, pois é essa configurada como o ponto final de espelhamento.

A outra parece ser uma porta dinâmica, por que e para que é usada?

Poderia ter a ver com o fato de um estar mostrando um número alto de leituras ( 5022) e o outro mostrando um número alto de gravações ( 63420).

Versão de compilação: 13.0.5264.1

Randi Vertongen
fonte

Respostas:

7

Quando um aplicativo estabelece uma conexão TCP, especifica uma porta para a porta de entrada (recebimento) e usa uma porta (um pouco) selecionada aleatoriamente para saída (origem ou envio). A porta de entrada para replicação AG é 5022 por padrão, portanto, todo o tráfego de replicação é enviado para a porta 5022. Portanto, você vê as leituras de rede ocorrendo na porta 5022, pois o SQL Server está atendendo na porta 5022 e lendo os pacotes enviados para essa porta .

A porta de saída, selecionada aleatoriamente (mais ou menos), é a porta da qual é enviada. Assim, você vê as gravações associadas à porta aleatória (63420 no seu exemplo), pois o SQL Server está gravando dados nessa porta para serem enviados na conexão.

Consulte Como são determinadas as portas de origem ... para obter mais

Tony Hinkle
fonte