VPN orqali SQL Server nomlangan instansiyasi: port 1433 emas, aniqlash
Nomlangan instansiya ulanishdan oldin SQL Browser'dan port so'raydi. Agar nom VPN orqali ishlamasa, lekin tcp:host,port ishlasa, kamchilik aniqlashda.
Ko'pchilik SQL Server host nomini to'liq manzil deb, VPN ni esa ruxsat berilgan yoki yo'q narsa deb qabul qiladi. Amalda nomlangan instansiya klientni DNS dan keyin ikkinchi qidiruv qilishga majbur qiladi va tunnel ko'pincha aynan shu qidiruvni buzadi. Aniq oxirgi nuqta undan chetlab o'tadi, shu sababli tcp:host,port ishlashi mumkin, host\INSTANCE esa vaqt tugashi bilan yakunlanadi. Farq xizmatni topish va undan foydalanishga ruxsat olish orasida.
Afsona: bitta host nomi bitta portni bildiradi
Host nomi manzilga hal qilinadi va uning ishi shu yerda tugaydi. Nomlangan instansiya server TCP portiga o'girishi kerak bo'lgan instansiya nomini qo'shadi va klient uni taxmin qila olmaydi. 1433 port standart instansiya uchun standart, mashinadagi har bir instansiyaning xususiyati emas. Ikkalasini bir narsa deb qarash klassik belgini keltiradi: ping ishlaydi, DNS ishlaydi, 1433 skaneri hech narsa ko'rsatmaydi va xulosa tarmoq SQL ni bloklaydi degan bo'ladi.
Ikkinchi taxmin ham xuddi shunday muvaffaqiyatsiz bo'ladi: TCP 1433 ni ochish yetarli degani. Agar instansiya boshqa joyda tinglasa, ochiq 1433 faqat u yerda boshqa narsa borligini isbotlaydi. Port tinglovchiga mos kelishi kerak va tinglovchi server tomonidagi konfiguratsiya detali ekanini buni taxmin qilish o'rniga so'rash kerak.
Klient nomlangan instansiya bilan aslida nima qiladi
Hostni hal qilgandan so'ng klient UDP 1434 orqali SQL Server Browser ga aniqlash so'rovini yuboradi va nomlangan instansiya qaysi portni ishlatishini so'raydi. Brauzer xizmati serverning o'z registridan javob beradi, keyin klient shu portga TCP ulanish ochadi. Kirishga urinishdan oldin ikkita protokol va ikkita port ishtirok etadi.
nslookup sqlhost.corp.example
nc -vzu sqlhost.corp.example 1434
Get-Service -Name SQLBrowser
Shu sababli faqat UDP bloklanganda o'lik hostga o'xshaydigan vaqt tugashi yuz beradi. Agar brauzer xizmati to'xtatilgan yoki o'chirilgan bo'lsa, ma'lumotlar bazasi dvigateli ishlab, uning TCP porti ochiq bo'lsa ham aniqlash so'rovi javobsiz qoladi. Agar instansiya statik port bilan sozlangan bo'lsa, oxirgi nuqta to'g'ridan-to'g'ri berilmagan bo'lsa, klient baribir so'raydi. Bu xatolarning har biri ilova xato xabarida bir xil ko'rinadi va ularga turli tuzatishlar kerak.
Brauzer xizmati aniqlash uchun qulaylik, ma'lumotlar bazasi emas. Uni to'xtatish dvigatelni to'xtatmaydi, uni ishga tushirish instansiya TCP portini ochmaydi.
Nom ishlamaganda aniq oxirgi nuqta nima uchun ishlaydi
Aniq oxirgi nuqta qidiruvni ketma-ketlikdan olib tashlaydi: klient siz ko'rsatgan manzil va portga to'g'ridan-to'g'ri ulanadi. Bu birinchi navbatda diagnostika, avtomatik doimiy yechim emas, chunki instansiya keyinroq dinamik portga qayta sozlansa port o'zgarishi mumkin. Xulosa qilishdan oldin ikkala shaklni bir xil klient va bir xil hisob bilan solishtiring.
sqlcmd -S "tcp:sqlhost.corp.example,51433" -U app_login -Q "SELECT @@SERVERNAME"
Test-NetConnection sqlhost.corp.example -Port 51433
Agar aniq shakl ishlasa va nomlangan shakl ishlamasa, kamchilik aniqlashda va uni qanday yopishni o'zingiz tanlashingiz mumkin: tunnel orqali UDP 1434 ga ruxsat bering yoki administratordan statik portni mahkamlashni va oxirgi nuqtani hujjatlashtirishni so'rang. Ikkalasi ham turli xizmat ko'rsatish xarajatlariga ega qasddan qilingan qarorlar. Diapazondagi har bir portni ochish ularning hech biri emas va uzoq kunning oxirida odatda shu variant taklif qilinadi. Tanlovni ulanish satrlari yashaydigan joyda yozib qo'ying.
Agar hech bir shakl ishlamasa, muammo aniqlashdan yuqorida. Brauzer xizmatini ayblashdan oldin tinglovchini, marshrutni va instansiya amalda ishlatadigan port uchun kirish qoidasini tekshiring.
Aniqlashdan keyin: autentifikatsiya va shaxsiyat alohida
Kirish muvaffaqiyatsizligi vaqt tugashidan boshqa hodisa va VPN shaxsiyati tunnel tufayli SQL kirishiga aylanmaydi. Klient to'g'ri portga yetganda, ma'lumotlar bazasi dvigateli o'z autentifikatsiyasi va ruxsatlarini qo'llaydi. Ikki bosqichni bitta chiptada aralashtirish aniqlash muammosi noto'g'ri jamoaga berilishining yo'lidir. Biror narsani o'zgartirishdan oldin xato raqamini o'qing.
Agar drayver server sertifikatini tekshirsa, hujjatlashtirilgan host nomini saqlang, chunki raqamli manzil orqali ulanish asl muammoni hal qilish o'rniga o'sha tekshiruvni o'zgartirishi mumkin. Yangi Microsoft drayverlari standart bo'yicha shifrlaydi, shuning uchun nom mos kelmasligi muvaffaqiyatli TCP ulanishdan keyin sertifikat xatosi sifatida namoyon bo'ladi. Bu yangi muvaffaqiyatsizlik emas, taraqqiyot.
Tark etilishi kerak bo'lgan afsona — SQL Server host nomi to'liq manzil degani. Bu host va nomlangan instansiya uchun tunnel olib o'tmasligi mumkin bo'lgan qidiruv qo'shiladi. Portni nomlang, aniqlash yo'lini nomlang va keyingi muvaffaqiyatsizlik qaysi qatlamni tuzatish kerakligini aytadi.