Ихэнх хүмүүс SQL Server-ийн хост нэрийг бүрэн хаяг гэж, VPN-ийг зөвшөөрөгдсөн эсвэл зөвшөөрөгдөөгүй зүйл гэж үздэг. Бодит байдалд нэртэй инстанц клиентийг DNS-ийн дараа хоёр дахь хайлт хийхийг албадаж, туннель яг тэр хайлтыг хамгийн их эвддэг. Тодорхой төгсгөлийн цэг түүнийг тойрч гардаг, тиймээс tcp:host,port ажиллаж байхад host\INSTANCE хугацаа дуусдаг. Ялгаа нь үйлчилгээг олох ба түүнийг ашиглах зөвшөөрөл авах хооронд байна.

Домог: нэг хост нэр нь нэг порт гэсэн үг

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

Хоёр дахь таамаг ч мөн адил бүтэлгүйтдэг: TCP 1433-ыг онгойлгоход хангалттай гэдэг нь. Хэрэв инстанц өөр газар сонсож байвал нээлттэй 1433 нь тэнд өөр зүйл байгааг л батална. Порт сонсогчтой тохирох ёстой, мөн сонсогч нь серверийн талын тохиргооны дэлгэрэнгүй мэдээлэл гэдгийг таахын оронд асуух хэрэгтэй.

Клиент нэртэй инстанцтай үнэндээ юу хийдэг

Хостыг шийдсэний дараа клиент UDP 1434-өөр SQL Server Browser руу илрүүлэлтийн хүсэлт илгээж, нэртэй инстанц ямар порт ашиглаж байгааг асуудаг. Хөтчийн үйлчилгээ серверийн өөрийн бүртгэлээс хариулж, дараа нь клиент тэр порт руу TCP холболт нээдэг. Нэвтрэхийг оролдохоос өмнө хоёр протокол, хоёр порт оролцдог.

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

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

Хөтчийн үйлчилгээ нь илрүүлэлтийн тав тух, өгөгдлийн сан биш. Түүнийг зогсоох нь хөдөлгүүрийг зогсоохгүй, эхлүүлэх нь инстанцын TCP портыг нээхгүй.

Нэр ажиллахгүй үед тодорхой төгсгөлийн цэг яагаад ажилладаг

Тодорхой төгсгөлийн цэг нь хайлтыг дарааллаас гаргана: клиент таны нэрлэсэн хаяг, порт руу шууд холбогдоно. Энэ нь эхлээд оношилгоо бөгөөд автоматаар байнгын шийдэл биш, учир нь инстанц дараа нь динамик порт руу дахин тохируулагдвал порт өөрчлөгдөж болно. Дүгнэлт хийхийн өмнө хоёр хэлбэрийг ижил клиент, ижил бүртгэлээр харьцуулна уу.

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

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

Хэрэв аль ч хэлбэр ажиллахгүй бол асуудал илрүүлэлтээс дээгүүр байна. Хөтчийн үйлчилгээг буруутгахын өмнө сонсогч, маршрут, инстанц бодитоор ашигладаг портын хандалтын дүрмийг шалгана уу.

Илрүүлэлтийн дараа: баталгаажуулалт ба таних тэмдэг нь тусдаа

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

Хэрэв драйвер серверийн гэрчилгээг шалгадаг бол баримтжуулсан хост нэрийг хадгалаарай, учир нь тоон хаягаар холбогдох нь анхны асуудлыг шийдэхийн оронд тэр шалгалтыг өөрчилж болно. Сүүлийн үеийн Microsoft драйверууд анхдагчаар шифрлэдэг тул нэрийн зөрүү нь амжилттай TCP холболтын дараа гэрчилгээний алдаа болж гарч ирдэг. Энэ нь шинэ бүтэлгүйтэл биш, дэвшил юм.

Орхих ёстой домог нь SQL Server-ийн хост нэр бүрэн хаяг гэдэг. Энэ нь хост бөгөөд нэртэй инстанцын хувьд туннель дамжуулахгүй байж болох хайлт нэмэгддэг. Портыг нэрлэ, илрүүлэлтийн замыг нэрлэ, дараагийн бүтэлгүйтэл аль давхаргыг засахыг хэлнэ.

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