Baca baris log SQL Server tentang pengikatan yang gagal semasa perkhidmatan masih berjalan, dan anda telah menemui kebergantungan susunan boot, bukan ranap. Gabungan itulah petunjuknya: enjin bermula sebelum alamat yang diarahkan untuk didengarinya wujud pada mesin. Penyesuai VPN yang muncul selepas log masuk ialah prasyarat buruk untuk perkhidmatan pangkalan data tanpa pengawasan, jadi jejaki kegagalan mengikut urutan yang dilihat enjin.

Mulakan pada log permulaan, bukan pada klien

Buka log ralat instans dan baca entri sekitar permulaan rangkaian, bukan hanya baris terakhir. Enjin melaporkan alamat yang dicuba dan protokol yang didayakan, dan rekod itu adalah dari sebelum mana-mana klien bersambung. Sekarang lihat apa yang wujud pada hos ketika ini. Jika antara muka yang memiliki alamat yang dikonfigurasikan hanya muncul selepas pengguna log masuk dan memulakan klien, alamat itu tiada semasa boot dan kegagalan pengikatan dijelaskan sepenuhnya.

Get-NetIPAddress -AddressFamily IPv4 | Select-Object InterfaceAlias, IPAddress, PrefixOrigin
Get-Content 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\LOG\ERRORLOG' -Tail 40

Sesuaikan laluan instans dengan pemasangan anda, dan baca senarai antara muka sebelum membuat kesimpulan. Alamat yang wujud tetapi dimiliki penyesuai yang salah ialah masalah berbeza daripada alamat yang belum wujud.

Ikuti susunan pengikatan yang benar-benar dipatuhi enjin

Enjin membaca konfigurasi pendengarnya, kemudian meminta sistem pengendalian mengikat. Jika alamat itu bukan setempat pada masa itu, pengikatan gagal untuk alamat tersebut sementara seluruh instans boleh terus berjalan normal. Itulah sebabnya protokol atau alamat lain masih boleh berfungsi, dan itulah sebabnya „SQL Server mati“ ialah ringkasan yang salah. Simpan titik akhir yang tepat daripada log: alamat, port dan protokol, kerana pembaikan bergantung pada yang mana satu daripada tiga itu salah.

Memulakan semula perkhidmatan selepas penyesuai muncul biasanya akan menjadikan pendengar berjaya, dan itulah tepatnya perangkapnya. Ia membuktikan kebergantungan dan bukannya menghapuskannya, dan ia memutuskan setiap pengguna yang bersambung setiap kali terowong bersambung semula.

Baca pendengar sebagaimana enjin membacanya

Dalam SQL Server Configuration Manager, buka sifat TCP/IP instans dan ambil perhatian tetapan Listen All sebelum mengedit alamat individu. Apabila Listen All ialah Yes, nilai Enabled bagi setiap alamat diabaikan, jadi mengeditnya tidak mengubah apa-apa yang digunakan pendengar. Catat tiga perkara mengikut urutan: alamat yang ingin anda layani, port, dan sama ada pendengar bertujuan meliputi semua alamat atau hanya satu. Kemudian gunakan perubahan melalui prosedur mula semula yang disokong dan baca log permulaan seterusnya untuk mengesahkan enjin mengikat apa yang anda minta.

Mendengar pada setiap alamat bukan kawalan akses. Jika pendengar luas benar-benar diperlukan, setiap antara muka yang boleh dicapai memerlukan keputusan tembok api dan kebenaran pangkalan data sendiri, termasuk mana-mana antara muka yang menghadap internet.

Beri klien destinasi yang stabil

Klien tidak memerlukan hos pangkalan data memakai alamat kolam. Reka bentuk berarah berfungsi dengan pelayan mendengar pada alamat peribadinya yang stabil sementara get laluan VPN memajukan trafik klien kepadanya dan membawa balasan kembali.

Test-NetConnection -ComputerName 10.80.0.15 -Port 1433
tracert -d 10.80.0.15

Jika klien mencapai 10.80.0.15, laluan terbukti dan pangkalan data hanya perlu membenarkan klien itu. Jika tidak, betulkan penghalaan dan DNS sebelum menyentuh pendengar lagi, kerana masalah pengikatan pada pelayan tidak pernah menjadi sebab klien tidak dapat menemuinya. Menambah alamat kolam palsu pada pelayan, atau get laluan lalai kedua untuk menyenangkan pendengar, mencipta masalah rangkaian baharu di atas yang lama. Kekalkan pengalamatan pelayan secara statik dan biarkan terowong membawa klien kepadanya.

Sahkan titik akhir yang digunakan klien

Akhiri dengan pemeriksaan tahap aplikasi dan bukan ujian port. Sambung dari klien dengan akaun yang digunakan aplikasi dan baca butiran sambungan sebelah pelayan, yang menunjukkan alamat setempat tempat sesi anda mendarat.

sqlcmd -S tcp:10.80.0.15,1433 -Q "SELECT local_net_address, local_tcp_port FROM sys.dm_exec_connections WHERE session_id = @@SPID"

Bandingkan alamat itu dengan pendengar yang anda konfigurasikan. Ketidakpadanan bermaksud pendengar kedua atau nama yang diselesaikan di tempat tidak dijangka, dan kedua-duanya wajar diketahui sebelum boot semula seterusnya menguji pembaikan anda untuk anda. Kemudian but semula hos tanpa pengguna log masuk dan sahkan pengikatan berjaya. Ujian tunggal itu ialah perbezaan antara pendengar yang dibaiki dan penyelesaian sementara yang gagal pada malam tampalan seterusnya.

Artikel berkaitan