在 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 端口,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
当应用程序建立 TCP 连接时,它为入站(接收)端口指定一个端口,并为出站(源或发送)使用(在某种程度上)随机选择的端口。AG 复制的入站端口默认为 5022,因此所有复制流量都发送到端口 5022。因此,您会看到网络读取发生在端口 5022 上,因为 SQL Server 正在侦听端口 5022 并读取发送到该端口的数据包.
随机选择(或多或少)的出站端口是发送它的端口。因此,您会看到与随机端口(在您的示例中为 63420)关联的写入,因为 SQL Server 正在将数据写入此端口以在连接上发送。
有关更多信息,请参阅如何确定源端口...