Ran*_*gen 8 sql-server availability-groups sql-server-2016
在 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;
Run Code Online (Sandbox Code Playgroud)
为数据库镜像协议显示了两个本地 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
Run Code Online (Sandbox Code Playgroud)
该5022端口是预期的,因为这是配置为镜像端点的端口。
另一个似乎是一个动态端口,为什么使用这个端口以及用于什么?
是否与一个显示大量读取 ( 5022) 和另一个显示大量写入 ( 63420)的事实有关。
构建版本:13.0.5264.1
当应用程序建立 TCP 连接时,它为入站(接收)端口指定一个端口,并为出站(源或发送)使用(有点)随机选择的端口。AG 复制的入站端口默认为 5022,因此所有复制流量都发送到端口 5022。因此,您会看到网络读取发生在端口 5022 上,因为 SQL Server 正在侦听端口 5022 并读取发送到该端口的数据包.
随机(或多或少)选择的出站端口是它发送的端口。因此,您会看到与随机端口(在您的示例中为 63420)关联的写入,因为 SQL Server 正在将数据写入此端口以在连接上发送。
请参阅如何为源端口确定...更多