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

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

Ton*_*kle 7

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

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

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