VPN मा SQL Server को नामित इन्स्ट्यान्स: पोर्ट 1433 होइन, खोज
नामित इन्स्ट्यान्स जोडिनु अघि SQL Browser लाई पोर्ट सोध्छ। यदि नाम VPN मा असफल भयो तर tcp:host,port काम गर्छ भने, खोज नै अभाव हो।
अधिकांश मानिसहरू 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 को होस्टनाम पूरा ठेगाना हो भन्ने हो। यो एउटा होस्ट हो र नामित इन्स्ट्यान्सका लागि टनेलले बोक्न नसक्ने खोज थपिन्छ। पोर्टको नाम भन्नुहोस्, खोज मार्गको नाम भन्नुहोस्, र अर्को असफलताले कुन तह सुधार्ने बताउनेछ।