Kapan Dynamic Port "dinamis"?

23

Saya sedang berdiskusi hari ini Dynamic Portsdengan salah satu rekan kerja saya dan dapat menggunakan beberapa bantuan untuk menjelaskan bagaimana mereka bekerja.

Pertanyaan pertama: Jika IPALL TCP Dynmaic Portspengaturan adalah angka tertentu (katakanlah 1971) apakah itu menandakan bahwa Anda memiliki port statis 1971 atau port dinamis yang saat ini 1971 dan dapat berubah di beberapa titik di masa depan.

masukkan deskripsi gambar di sini

Pertanyaan kedua: Ini adalah pertanyaan yang paling membuat saya penasaran. Kami memiliki instance yang memiliki port yang sama (nilai dalam IPALL TCP Dynmaic Portspengaturan) selama beberapa tahun hingga puluhan instance restart. Apa yang sebenarnya menyebabkan port dinamis benar-benar berubah setelah instance restart?

Kenneth Fisher
sumber

Jawaban:

22

Artikel KB ini: Cara mengonfigurasi SQL Server untuk mendengarkan pada port tertentu akan menjelaskan hal-hal untuk Anda:

Alokasi Port Dinamis

Jika Anda mengonfigurasi instance SQL Server untuk menggunakan alokasi port dinamis, dan Anda belum me-restart instance SQL Server, nilai registri ditetapkan sebagai berikut:

TCPDynamicPorts = Kosong

TCPPort = 0

Namun, jika Anda mengonfigurasi instance SQL Server untuk menggunakan alokasi port dinamis, dan Anda me-restart instance SQL Server, nilai registri ditetapkan sebagai berikut:

TCPDynamicPorts = Port saat ini yang digunakan

TCPPort = Port saat ini yang digunakan

Alokasi Pelabuhan Statis:

Jika Anda mengonfigurasi instance SQL Server untuk menggunakan port statis, dan Anda belum me-restart instance SQL Server, nilai registri ditetapkan sebagai berikut:

TCPDynamicPorts = Port terakhir yang digunakan

TCPPort = Port statis baru yang akan digunakan setelah restart berikutnya; port statis baru yang Anda atur menggunakan Server Network Utility

Namun, jika Anda mengonfigurasi instance SQL Server untuk menggunakan port statis, dan Anda me-restart instance SQL Server, nilai registri ditetapkan sebagai berikut:

TCPDynamicPorts = Kosong

TCPPort = Port statis baru yang Anda atur menggunakan Server Network Utility

untuk pertanyaan kedua Anda -

Setiap kali Anda memulai SQLServer bernama, ia menggunakan port yang dialokasikan. Dalam hal jika port digunakan oleh program lain , maka SQL Server memilih port lain pada saat restart yaitu port dinamis dipilih pada startup pertama, dan umumnya akan tetap sama melalui restart di masa depan (disimpan dalam Registry) - tetapi jika ini digunakan oleh program lain maka SQL server akan memilih port baru. Catatan: Untuk Server Prod, saya hanya menggunakan port statis - keamanan dan kemudahan pengelolaan alasan.

Catatan: Hal-hal keren lainnya yang perlu diketahui:

Periksa apakah Dynamic port digunakan atau tidak menggunakan T-SQL:

SELECT NAME
    ,protocol_desc
    ,type_desc
    ,state_desc
    ,is_admin_endpoint
    ,port
    ,is_dynamic_port
    ,ip_address
FROM sys.tcp_endpoints

masukkan deskripsi gambar di sini

Anda dapat menggunakan netstat -anountuk memeriksa menggunakan cmdline.

Selain itu, Anda dapat memeriksa apa yang di-cache sebelumnya di registri di sisi klien untuk port apa yang digunakan untuk terhubung ke server sql:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI11.0\LastConnect

masukkan deskripsi gambar di sini

Kin Shah
sumber
Terima kasih dan itu adalah tautan yang sangat berguna! Apakah Anda tahu apa yang menyebabkan port dinamis mengubah port? Lihat Second questiondi pertanyaan saya di atas.
Kenneth Fisher
@KennethFisher untuk Anda second question- Setiap kali Anda memulai SQLServer bernama, ia menggunakan port yang dialokasikan. Dalam hal jika port digunakan oleh program lain maka SQL Server memilih port lain pada saat restart. Port dinamis dipilih pada startup pertama, dan umumnya akan tetap sama melalui restart di masa depan (disimpan dalam Registry) - tetapi jika digunakan oleh program lain maka SQL server akan memilih port baru. Catatan : Untuk Server Prod, saya hanya menggunakan port statis - keamanan dan kemudahan pengelolaan alasan.
Kin Shah
Apakah Anda akan berbaik hati menjelaskan mengapa menurut Anda layak menerapkan layanan yang sama sekali baru (browser SQL server) yang bekerja pada port statis sehingga mungkin tidak memulai jika port ini digunakan, hanya karena Anda ingin memulai SQL server di kasus di mana beberapa layanan lain menggunakan port Anda terlalu kikuk untuk melampirkan mungkin perangkat lunak paling mahal yang Anda gunakan?
kakaz