Darllenwch linell log SQL Server am rwymiad sydd wedi methu tra bo’r gwasanaeth yn dal i redeg, ac rydych wedi dod o hyd i ddibyniaeth ar drefn cychwyn yn hytrach na chwalfa. Y cyfuniad hwnnw yw’r cliw: cychwynnodd yr injan cyn i’r cyfeiriad y dywedwyd wrthi am wrando arno fodoli ar y peiriant. Mae addasydd VPN sy’n codi ar ôl mewngofnodi yn rhag-amod gwael ar gyfer gwasanaeth cronfa ddata heb oruchwyliaeth, felly cerddwch y methiant yn y drefn y mae’r injan yn ei gweld.

Dechreuwch yn y log cychwyn, nid gyda’r cleient

Agorwch log gwallau’r achos a darllen y cofnodion o amgylch cychwyn y rhwydwaith, nid y llinell olaf yn unig. Mae’r injan yn adrodd pa gyfeiriadau y gwnaeth gynnig arnynt a pha brotocolau a alluogwyd ganddi, ac mae’r cofnod hwnnw o flaen unrhyw gleient yn cysylltu. Nawr edrychwch ar yr hyn sy’n bodoli ar y gwesteiwr ar hyn o bryd. Os yw’r rhyngwyneb sy’n berchen ar y cyfeiriad wedi’i ffurfweddu yn ymddangos dim ond ar ôl i ddefnyddiwr fewngofnodi a dechrau cleient, roedd y cyfeiriad yn absennol wrth gychwyn ac mae’r methiant rhwymo wedi’i egluro’n llawn.

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

Addaswch lwybr yr achos at eich gosodiad, a darllenwch y rhestr rhyngwynebau cyn dod i gasgliadau. Mae cyfeiriad sy’n bodoli ond sy’n eiddo i’r addasydd anghywir yn broblem wahanol i gyfeiriad nad yw’n bodoli eto.

Cerddwch y drefn rwymo y mae’r injan yn ei dilyn mewn gwirionedd

Mae’r injan yn darllen ei ffurfweddiad gwrandawr, yna’n gofyn i’r system weithredu rwymo. Os nad yw’r cyfeiriad yn lleol ar y foment honno, mae’r rhwymiad yn methu ar gyfer y cyfeiriad hwnnw tra gall gweddill yr achos barhau’n normal. Dyna pam y gall protocolau eraill neu gyfeiriadau eraill weithio o hyd, a dyna pam mai “mae SQL Server i lawr” yw’r crynodeb anghywir. Cadwch y pwynt terfynol union o’r log: cyfeiriad, porth a phrotocol, oherwydd mae’r atgyweiriad yn dibynnu ar ba un o’r tri sydd o’i le.

Bydd ailgychwyn y gwasanaeth ar ôl i’r addasydd ymddangos fel arfer yn gwneud i’r gwrandawr lwyddo, a dyna’n union y trap. Mae’n profi’r ddibyniaeth yn hytrach na’i dileu, ac mae’n torri pob defnyddiwr cysylltiedig bob tro y bydd y twnnel yn ailgysylltu.

Darllenwch y gwrandawr fel y mae’r injan yn ei ddarllen

Yn SQL Server Configuration Manager, agorwch briodweddau TCP/IP yr achos a nodwch y gosodiad Listen All cyn golygu cyfeiriadau unigol. Pan fo Listen All yn Yes, anwybyddir y gwerthoedd Enabled fesul cyfeiriad, felly nid yw eu golygu’n newid dim y mae’r gwrandawr yn ei ddefnyddio. Cofnodwch dri pheth yn eu trefn: y cyfeiriad rydych am ei wasanaethu, y porth, ac a yw’r gwrandawr i fod i gynnwys pob cyfeiriad neu un yn unig. Yna cymhwyswch y newid trwy’r weithdrefn ailgychwyn a gefnogir a darllenwch y log cychwyn nesaf i gadarnhau bod yr injan wedi rhwymo’r hyn y gwnaethoch ofyn amdano.

Nid rheolaeth mynediad yw gwrando ar bob cyfeiriad. Os oes gwir angen gwrandawr eang, mae angen ei benderfyniad wal dân a chymeradwyaeth cronfa ddata ei hun ar bob rhyngwyneb y gellir ei gyrraedd, gan gynnwys unrhyw ryngwyneb sy’n wynebu’r rhyngrwyd.

Rhowch gyrchfan sefydlog i’r cleient

Nid oes angen i’r cleient i westeiwr y gronfa ddata wisgo cyfeiriad cronfa. Mae dyluniad wedi’i lwybro yn gweithio gyda’r gweinydd yn gwrando ar ei gyfeiriad preifat sefydlog tra bo’r porth VPN yn anfon traffig y cleient ato ac yn cario’r ateb yn ôl.

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

Os yw’r cleient yn cyrraedd 10.80.0.15, mae’r llwybr wedi’i brofi a does gan y gronfa ddata ond awdurdodi’r cleient hwnnw. Os nad yw, trwsiwch y llwybro a’r DNS cyn cyffwrdd â’r gwrandawr eto, oherwydd nid problem rwymo ar y gweinydd oedd y rheswm erioed na all cleient ddod o hyd iddo. Mae ychwanegu cyfeiriad cronfa ffug at y gweinydd, neu ail borth rhagosodedig i wneud y gwrandawr yn hapus, yn creu problem rwydwaith newydd ar ben yr hen un. Cadwch gyfeiriad y gweinydd yn statig a gadewch i’r twnnel ddod â chleientiaid ato.

Gwiriwch y pwynt terfynol a ddefnyddiodd y cleient

Gorffenwch â gwiriad ar lefel cymhwysiad yn hytrach na phrawf porth. Cysylltwch o’r cleient â’r cyfrif y mae’r cymhwysiad yn ei ddefnyddio a darllenwch fanylion y cysylltiad ar ochr y gweinydd, sy’n dangos y cyfeiriad lleol y glaniodd eich sesiwn arno.

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"

Cymharwch y cyfeiriad hwnnw â’r gwrandawr a ffurfweddwyd gennych. Mae anghysondeb yn golygu ail wrandawr neu enw’n datrys yn rhywle annisgwyl, ac mae’r ddau’n werth eu gwybod cyn i’r ailgychwyn nesaf brofi eich atgyweiriad drosoch. Yna ailgychwynnwch y gwesteiwr heb unrhyw ddefnyddiwr wedi mewngofnodi a chadarnhau bod y rhwymiad yn llwyddo. Mae’r un prawf hwnnw’n wahanol rhwng gwrandawr wedi’i atgyweirio a chyfyngwaith sy’n methu ar y noson glytiau nesaf.

Erthyglau cysylltiedig