Үйлчилгээ ажиллаж байх үед бүтэлгүй холболтын тухай SQL Server-ийн лог мөрийг уншихад та осол биш, ачаалах дарааллаас хамааралтай байдлыг олсон. Яг энэ хослол нь сэжүүр: хөдөлгүүр өөрт нь сонсохыг тушаасан хаяг машин дээр бий болохоос өмнө эхэлсэн. Нэвтрэлтийн дараа гарч ирдэг VPN адаптер нь хяналтгүй өгөгдлийн сангийн үйлчилгээнд муу урьдчилсан нөхцөл тул бүтэлгүйтлийг хөдөлгүүрийн хардаг дарааллаар дагаарай.

Клиентээс биш, эхлүүлэх логноос эхэл

Инстанцын алдааны логыг нээж, зөвхөн сүүлийн мөр биш, сүлжээний эхлүүлэлтийн эргэн тойрон дахь бичлэгүүдийг унш. Хөдөлгүүр ямар хаягуудыг туршиж, ямар протоколуудыг идэвхжүүлснээ мэдээлдэг бөгөөд тэр бичлэг нь аль ч клиент холбогдохоос өмнөх юм. Одоо хост дээр яг энэ мөчид юу байгааг хар. Хэрэв тохируулсан хаягийг эзэмшдэг интерфейс хэрэглэгч нэвтэрч клиент эхлүүлсний дараа л гарч ирдэг бол ачаалах үед хаяг байгаагүй бөгөөд холболтын бүтэлгүйтэл бүрэн тайлбарлагдана.

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

Инстанцын замыг өөрийн суулгалтад тааруулж, дүгнэлт хийхээс өмнө интерфейсийн жагсаалтыг унш. Байгаа боловч буруу адаптерт хамаарах хаяг нь одоохондоо байхгүй хаягаас өөр асуудал юм.

Хөдөлгүүрийн бодитоор дагадаг холболтын дарааллыг дамжина уу

Хөдөлгүүр сонсогчийн тохиргоог уншиж, дараа нь үйлдлийн системээс холбогдохыг хүснэ. Хэрэв тухайн мөчид хаяг локал биш бол тэр хаягт холболт бүтэлгүйтэх боловч инстанцын бусад хэсэг хэвийн үргэлжилж болно. Тиймээс бусад протокол эсвэл бусад хаяг ажилласаар байж болох бөгөөд тиймээс „SQL Server унасан“ гэдэг нь буруу дүгнэлт юм. Логноос яг төгсгөлийн цэгийг хадгал: хаяг, порт, протокол, учир нь засвар нь эдгээр гуравын аль нь буруугаас хамаарна.

Адаптер гарч ирсний дараа үйлчилгээг дахин эхлүүлэх нь ихэвчлэн сонсогчийг амжилттай болгох бөгөөд энэ нь яг тэр урхи юм. Энэ нь хамаарлыг арилгахын оронд нотолж, туннель дахин холбогдох бүрт холбогдсон бүх хэрэглэгчийг таслана.

Сонсогчийг хөдөлгүүрийн уншиж байгаа шигээр унш

SQL Server Configuration Manager дотор инстанцын TCP/IP шинж чанарыг нээж, бие даасан хаягуудыг засахын өмнө Listen All тохиргоог анхаар. Listen All нь Yes үед хаяг тус бүрийн Enabled утгуудыг үл тоомсорлодог тул тэдгээрийг засах нь сонсогчийн ашигладаг зүйлийг өөрчлөхгүй. Гурван зүйлийг дараалан тэмдэглэ: үйлчлэхээр төлөвлөж буй хаяг, порт, сонсогч бүх хаягийг эсвэл зөвхөн нэгийг хамарна уу. Дараа нь өөрчлөлтийг дэмжигдсэн дахин эхлүүлэх журмаар хэрэглэж, хөдөлгүүр таны хүссэнийг холбосон эсэхийг батлахын тулд дараагийн эхлүүлэх логыг унш.

Бүх хаяг дээр сонсох нь хандалтын хяналт биш. Хэрэв өргөн сонсогч үнэхээр шаардлагатай бол хүрч болох интерфейс бүр өөрийн галт хана болон өгөгдлийн сангийн зөвшөөрлийн шийдвэр шаарддаг, интернэт рүү харсан интерфейсийг оролцуулан.

Клиентэд тогтвортой очих газрыг өг

Клиентэд өгөгдлийн сангийн хост пулын хаяг өмсөх шаардлагагүй. Маршрутлагдсан загвар нь сервер өөрийн тогтвортой хувийн хаяг дээр сонсож, VPN гарц клиентийн урсгалыг түүн рүү дамжуулж хариуг буцааж авчрах үед ажилладаг.

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

Хэрэв клиент 10.80.0.15 хүрвэл зам нотлогдсон бөгөөд өгөгдлийн сан зөвхөн тэр клиентийг зөвшөөрөх шаардлагатай. Хэрэв хүрэхгүй бол сонсогчийг дахин хүрэхийн өмнө маршрутлалт болон DNS-ийг зас, учир нь сервер дээрх холболтын асуудал клиент үүнийг олж чадахгүй байх шалтгаан хэзээ ч байгаагүй. Серверт хуурамч пулын хаяг нэмэх, эсвэл сонсогчийг баярлуулахын тулд хоёр дахь өгөгдмөл гарц нэмэх нь хуучны дээр шинэ сүлжээний асуудал үүсгэдэг. Серверийн хаяглалтыг статикаар барьж, туннель клиентүүдийг түүн рүү авчрахыг зөвшөөр.

Клиентийн ашигласан төгсгөлийн цэгийг шалга

Портын туршилт биш, аппликейшны түвшний шалгалтаар дуусга. Клиентээс аппликейшны ашигладаг бүртгэлээр холбогдож, серверийн талын холболтын дэлгэрэнгүй мэдээллийг унш, энэ нь таны сесс буусан локал хаягийг харуулна.

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"

Тэр хаягийг таны тохируулсан сонсогчтой харьцуул. Зөрүү нь хоёр дахь сонсогч эсвэл гэнэтийн газар шийдэгддэг нэр гэсэн үг бөгөөд дараагийн дахин ачаалалт таны засварыг таны оронд туршихаас өмнө хоёуланг нь мэдэх нь зүйтэй. Дараа нь хост-ыг нэвтэрсэн хэрэглэгчгүйгээр дахин ачаалж, холболт амжилттай болсныг батал. Тэр ганц туршилт нь зассан сонсогч ба дараагийн нөхөөсийн шөнө бүтэлгүйтэх түр зуурын шийдлийн ялгаа юм.

Холбоотой нийтлэлүүд