Протокол TCP зеркального отображения базы данных используется. Один по умолчанию, один динамический?

8

При выполнении нижеуказанного запроса к первичной / вторичной реплике группы SQL Server Always On Availability ™

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

Два локальных порта TCP показаны для протокола зеркального отображения базы данных, 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

5022Порт , как ожидается, так как это один сконфигурирован как конечная точка зеркального отображения.

Другой кажется динамическим портом, почему и для чего этот используется?

Может ли это быть связано с тем, что один показывает большое количество операций чтения ( 5022), а другой - большое количество операций записи ( 63420).

Версия сборки: 13.0.5264.1

Рэнди Вертонген
источник

Ответы:

7

Когда приложение устанавливает соединение TCP, оно указывает порт для входящего (принимающего) порта и использует (несколько) случайно выбранный порт для исходящего (исходный или отправляющий). Входящий порт для репликации AG по умолчанию равен 5022, поэтому весь трафик репликации отправляется на порт 5022. Соответственно, вы видите, что сетевое чтение происходит на порту 5022, поскольку SQL Server прослушивает порт 5022 и читает пакеты, отправленные на этот порт. ,

Исходящий порт, который выбирается случайным образом (более или менее), является портом, с которого он отправляется. Соответственно, вы видите записи, связанные со случайным портом (63420 в вашем примере), поскольку SQL Server записывает данные на этот порт для отправки по соединению.

Посмотрите, как определяются исходные порты ... для более

Тони Хинкль
источник