Lugege SQL Serveri logirida ebaõnnestunud sidumisest, kui teenus veel töötab, ja olete leidnud käivituse järjekorrast sõltuvuse, mitte krahhi. Just see kombinatsioon on vihje: mootor käivitus enne, kui aadress, millel tal kästi kuulata, masinas olemas oli. Pärast sisselogimist tõusev VPN-adapter on järelevalveta andmebaasiteenuse jaoks halb eeltingimus, seega jälgige tõrget samas järjekorras, nagu mootor seda näeb.

Alustage käivituslogist, mitte kliendist

Avage eksemplari vealogi ja lugege võrgu initsialiseerimise ümbruse kirjeid, mitte ainult viimast rida. Mootor teatab, milliseid aadresse ta proovis ja millised protokollid lubas, ja see kirje pärineb ajast enne mis tahes kliendi ühendumist. Nüüd vaadake, mis hostis praegu olemas on. Kui konfigureeritud aadressi omav liides ilmub alles pärast seda, kui kasutaja logib sisse ja käivitab kliendi, puudus aadress käivitamisel ja sidumise tõrge on täielikult seletatud.

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

Kohandage eksemplari tee oma paigaldusega ja lugege liideste loendit enne järelduste tegemist. Aadress, mis on olemas, kuid kuulub vale adapteri alla, on teine probleem kui aadress, mida veel pole.

Käige läbi sidumisjärjekord, mida mootor tegelikult järgib

Mootor loeb oma kuulaja konfiguratsiooni ja palub seejärel operatsioonisüsteemil siduda. Kui aadress sel hetkel lokaalne pole, ebaõnnestub sidumine selle aadressi jaoks, samal ajal kui ülejäänud eksemplar võib tavaliselt jätkata. Seetõttu võivad teised protokollid või muud aadressid endiselt töötada ja seetõttu on „SQL Server on maas“ vale kokkuvõte. Säilitage logist täpne lõpp-punkt: aadress, port ja protokoll, sest parandus sõltub sellest, milline neist kolmest on vale.

Teenuse taaskäivitamine pärast adapteri ilmumist paneb kuulaja tavaliselt õnnestuma ja täpselt see ongi lõks. See tõestab sõltuvust selle asemel, et seda kõrvaldada, ja katkestab iga ühendatud kasutaja iga kord, kui tunnel uuesti ühendub.

Lugege kuulajat nii, nagu mootor seda loeb

Avage SQL Server Configuration Manageris eksemplari TCP/IP atribuudid ja pange enne üksikute aadresside muutmist tähele seadet Listen All. Kui Listen All on Yes, ignoreeritakse iga aadressi Enabled väärtusi, seega nende muutmine ei muuda midagi, mida kuulaja kasutab. Kirjutage kolm asja järjekorras üles: aadress, mida kavatsete teenindada, port ja kas kuulaja peaks katma kõik aadressid või ainult ühe. Seejärel rakendage muudatus toetatud taaskäivitusprotseduuri kaudu ja lugege järgmist käivituslogi, et kinnitada, et mootor sidus selle, mida palusite.

Kõigil aadressidel kuulamine ei ole juurdepääsukontroll. Kui lai kuulaja on tõesti vajalik, vajab iga kättesaadav liides oma tulemüüri ja andmebaasi autoriseerimise otsust, sealhulgas iga interneti poole vaatav liides.

Andke kliendile stabiilne sihtkoht

Klient ei vaja, et andmebaasi host kannaks pooli aadressi. Marsruuditud lahendus töötab nii, et server kuulab oma stabiilsel privaatsel aadressil, samal ajal kui VPN-lüüs suunab kliendi liikluse selle juurde ja kannab vastuse tagasi.

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

Kui klient jõuab aadressile 10.80.0.15, on tee tõestatud ja andmebaas peab ainult selle kliendi autoriseerima. Kui ei jõua, parandage marsruutimine ja DNS enne kuulaja uuesti puudutamist, sest sidumisprobleem serveris ei olnud kunagi põhjus, miks klient seda ei leia. Võltsi pooli aadressi lisamine serverile või teise vaikelüüsi lisamine kuulaja rahustamiseks loob vana peale uue võrguprobleemi. Hoidke serveri adresseerimine staatilisena ja laske tunnelil kliendid selle juurde tuua.

Kontrollige lõpp-punkti, mida klient kasutas

Lõpetage rakenduse tasandi kontrolliga, mitte pordi testiga. Ühenduge kliendist kontoga, mida rakendus kasutab, ja lugege serveripoolseid ühenduse üksikasju, mis näitavad kohalikku aadressi, kuhu teie seanss maandus.

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"

Võrrelge seda aadressi konfigureeritud kuulajaga. Erinevus tähendab teist kuulajat või nime, mis lahendatakse ootamatus kohas, ja mõlemat tasub teada enne, kui järgmine taaskäivitus teie parandust teie eest testib. Seejärel taaskäivitage host ilma sisselogitud kasutajata ja kinnitage, et sidumine õnnestub. See üks test on erinevus parandatud kuulaja ja ajutise lahenduse vahel, mis järgmisel paigaldusööl ebaõnnestub.

Seotud artiklid