使用的数据库镜像协议TCP端口。一种默认,一种动态?


8

在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;

显示两个用于数据库镜像协议的本地tcp端口,502263420

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

Answers:


7

当应用程序建立TCP连接时,它将为入站(接收)端口指定一个端口,并使用一个(某种程度上)随机选择的端口作为出站(源或发送)。默认情况下,AG复制的入站端口为5022,因此所有复制通信都发送到端口5022。因此,您会看到网络读取发生在端口5022上,因为SQL Server正在侦听端口5022并读取发送到该端口的数据包。

随机选择(或多或少)的出站端口是从其发送的端口。因此,您会看到与随机端口(在您的示例中为63420)相关联的写入操作,因为SQL Server正在将数据写入此端口以在连接上发送。

请参阅如何为源端口确定...更多

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.