Enamik inimesi kohtleb SQL Serveri hostinime täieliku aadressina ja VPN-i kui midagi, mis on kas lubatud või mitte. Praktikas paneb nimeline eksemplar kliendi pärast DNS-i tegema teise otsingu, ja just see otsing on osa, mida tunnel kõige sagedamini katki teeb. Selgesõnaline lõpp-punkt möödub sellest, mistõttu tcp:host,port võib töötada, samal ajal kui host\INSTANCE aegub. Erinevus on teenuse leidmise ja selle kasutamise loa vahel.

Müüt: üks hostinimi tähendab ühte porti

Hostinimi laheneb aadressiks ja sellega tema töö lõpeb. Nimeline eksemplar lisab eksemplari nime, mille server peab tõlkima TCP-pordiks, ja klient ei saa seda arvata. Port 1433 on vaikeeksemplari vaikeväärtus, mitte iga masina eksemplari omadus. Kui kohelda mõlemat sama asjana, tekib klassikaline sümptom: ping töötab, DNS töötab, 1433 skaneerimine ei näita midagi ja järeldus on, et võrk blokeerib SQL-i.

Teine eeldus ebaõnnestub samamoodi: et TCP 1433 avamisest piisab. Kui eksemplar kuulab mujal, tõestab avatud 1433 ainult seda, et seal on midagi muud. Port peab kuulajaga sobima ja et kuulaja on serveripoolne konfiguratsiooni detail, seda tuleks küsida, mitte oletada.

Mida klient nimelise eksemplariga tegelikult teeb

Pärast hosti lahendamist saadab klient avastamistaotluse SQL Server Browserile UDP 1434 kaudu ja küsib, millist porti nimeline eksemplar kasutab. Brauseri teenus vastab serveri enda registrist ja seejärel avab klient TCP-ühenduse selle pordiga. Enne sisselogimise katset on kaasatud kaks protokolli ja kaks porti.

nslookup sqlhost.corp.example
nc -vzu sqlhost.corp.example 1434
Get-Service -Name SQLBrowser

Seetõttu tekitab ainult UDP blokeerimine aegumise, mis näeb välja nagu surnud host. Kui brauseri teenus on peatatud või välja lülitatud, jääb avastamistaotlus vastuseta, kuigi andmebaasimootor töötab ja selle TCP-port on avatud. Kui eksemplar on konfigureeritud staatilise pordiga, küsib klient ikkagi, kui talle ei antud lõpp-punkti otse. Kõik need tõrked näevad rakenduse veateates ühesugused välja ja vajavad erinevaid parandusi.

Brauseri teenus on avastamise mugavus, mitte andmebaas. Selle peatamine ei peata mootorit ja selle käivitamine ei ava eksemplari TCP-porti.

Miks selgesõnaline lõpp-punkt töötab, kui nimi ei tööta

Selgesõnaline lõpp-punkt eemaldab otsingu järjestusest: klient ühendub otse aadressi ja pordiga, mille te nimetasite. See on esmalt diagnostika, mitte automaatselt püsiv lahendus, sest port võib muutuda, kui eksemplar hiljem dünaamiliseks ümber konfigureeritakse. Võrrelge mõlemat vormi sama kliendi ja sama kontoga enne järelduste tegemist.

sqlcmd -S "tcp:sqlhost.corp.example,51433" -U app_login -Q "SELECT @@SERVERNAME"
Test-NetConnection sqlhost.corp.example -Port 51433

Kui selgesõnaline vorm õnnestub ja nimeline ebaõnnestub, on tühik avastamises ja te võite valida, kuidas see sulgeda: lubage UDP 1434 tunnelist läbi või paluge administraatoril kinnitada staatiline port ja dokumenteerida lõpp-punkt. Mõlemad on teadlikud otsused erinevate hoolduskuludega. Vahemiku iga pordi avamine ei ole kumbki neist ja see on valik, mida kiputakse pakkuma pika päeva lõpus. Kirjutage valik sinna, kus elavad ühendusstringid.

Kui kumbki vorm ei tööta, on probleem avastamisest ülesvoolu. Kontrollige kuulajat, marsruuti ja juurdepääsureeglit pordi jaoks, mida eksemplar tegelikult kasutab, enne kui süüdistate brauseri teenust.

Pärast avastamist: autentimine ja identiteet on eraldi

Sisselogimise tõrge on teine sündmus kui aegumine ja VPN-i identiteet ei muutu tunneli tõttu SQL-i sisselogimiseks. Kui klient jõuab õige pordini, rakendab andmebaasimootor oma autentimist ja õigusi. Kahe etapi segamine ühes piletes on viis, kuidas avastamisprobleem satub vale meeskonna kätte. Lugege vea numbrit enne, kui midagi muudate.

Hoidke dokumenteeritud hostinime, kui draiver valideerib serveri sertifikaati, sest numbrilise aadressi kaudu ühendamine võib seda kontrolli muuta, selle asemel et algne probleem lahendada. Hiljutised Microsofti draiverid krüpteerivad vaikimisi, seega nime mittevastavus ilmub sertifikaadiveana pärast edukat TCP-ühendust. See on edasiminek, mitte uus tõrge.

Müüt, millest tuleks loobuda, on see, et SQL Serveri hostinimi on täielik aadress. See on host pluss, nimelise eksemplari puhul, otsing, mida tunnel ei pruugi kanda. Nimetage port, nimetage avastamise tee ja järgmine tõrge ütleb teile, millist kihti parandada.

Seotud artiklid