Database Mirroring protokol port TCP yang digunakan. Satu standar, satu dinamis?

8

Saat menjalankan kueri di bawah ini pada replika primer / sekunder dari 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;

Dua port tcp lokal muncul untuk protokol mirroring Database, 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

The 5022port diharapkan, karena ini adalah salah satu dikonfigurasi sebagai titik akhir mirroring.

Yang lain tampaknya menjadi port yang dinamis, mengapa dan untuk apa ini digunakan?

Mungkinkah itu ada hubungannya dengan fakta bahwa yang satu menunjukkan jumlah baca yang tinggi ( 5022) dan yang lainnya menunjukkan jumlah tulisan yang tinggi ( 63420).

Versi pembuatan: 13.0.5264.1

Randi Vertongen
sumber

Jawaban:

7

Ketika suatu aplikasi membuat koneksi TCP, itu menentukan port untuk port inbound (menerima), dan menggunakan port (agak) yang dipilih secara acak untuk outbound (sumber, atau kirim). Port masuk untuk replikasi AG adalah 5022 secara default, sehingga semua lalu lintas replikasi dikirim ke port 5022. Dengan demikian, Anda melihat jaringan membaca terjadi pada port 5022, karena SQL Server mendengarkan pada port 5022 dan membaca paket yang dikirim ke port itu .

Port keluar, yang dipilih secara acak (lebih atau kurang), adalah port yang dikirim DARI. Dengan demikian, Anda melihat tulisan yang terkait dengan port acak (63420 dalam contoh Anda), karena SQL Server menulis data ke port ini untuk dikirim pada koneksi.

Lihat Bagaimana port sumber ditentukan ... untuk lebih lanjut

Tony Hinkle
sumber