2012-03-14 9 views
5

के माध्यम से SQL सर्वर इंस्टेंस एक्सेस करना मैं एक आईपी एनएटी मैपिंग के माध्यम से सामने आने वाले SQL सर्वर तक पहुंचने का प्रयास कर रहा हूं। सभी बंदरगाह खुले हैं। मैं एनएटी के ब्योरे को नहीं जानता, अगर यह प्रासंगिक है, क्योंकि यह लाल टेप के ढेर में छिपी हुई कंपनी में कहीं और है।एनएटी

यहां मुझे पता चला है। जब आप SQL सर्वर के नामित उदाहरण तक पहुंचने का प्रयास करते हैं, तो क्लाइंट पूछता है कि नामित इंस्टेंस किस पोर्ट पर चल रहा है। यदि मैं SQL सर्वर में आरडीपी करता हूं तो मैं उस उदाहरण के बंदरगाह को जानने के लिए netstat का उपयोग कर सकता हूं और फ़ायरवॉल से सफलतापूर्वक कनेक्ट कर सकता हूं। हालांकि, इंस्टेंस नाम के माध्यम से कनेक्ट करना काम नहीं करता है। मेरा अनुमान है कि सर्वर किसी भी समय इसके आंतरिक आईपी पते के साथ प्रतिक्रिया दे रहा है और ग्राहक इसका उपयोग कर रहा है।

क्या किसी को पता है कि यह सच है और यदि इसके आसपास कोई रास्ता है?

+1

पोर्ट संख्या अनुवाद करने के लिए उदाहरण एसक्यूएल ब्राउज़र सेवा है जो पोर्ट 1434/udp पर ध्यान दे रही द्वारा किया जाता है । जांचें कि क्या आपका एनएटी (डीएमजेड मोड में) सभी यूड पोर्ट बंद कर रहा है। – wqw

+0

मेरे पर्यावरण में यह SQL सर्वर मशीन पर विंडोज फ़ायरवॉल को बंद करने में मदद करता है। – scar80

उत्तर

6

उदाहरण सुनना बंदरगाह प्रोटोकॉल खोज SQL Server Browser Service के अधीन है। यह यूडीपी 1434 पर उपयोग करता है। यूडीपी 1434 की एनएटी अग्रेषण के साथ आपके क्लाइंट को SQL सर्वर ब्राउज़र सेवा (यदि से इंटरैक्ट करने में सक्षम होना चाहिए, तो SQL सर्वर ब्राउज़र का यूडीपी प्रतिक्रिया पैकेट क्लाइंट वापस पहुंच सकता है, बड़ा यदि), लेकिन यहां तक ​​कि एक सफल बातचीत भी आपके ग्राहक को एक कड़े स्थान पर रखेगी: अब यह जानता है SQL सर्वर गतिशील श्रवण पोर्ट, यह कैसे पहुंचता है? एनएटी को SQL सर्वर द्वारा उठाए गए बंदरगाह को गतिशील रूप से आगे बढ़ाना होगा, या इसे सभी बंदरगाहों को आगे बढ़ाना होगा।

मैं अनुशंसा करता हूं कि आपका SQL सर्वर एक प्रति-कॉन्फ़िगर, स्थिर रूप से असाइन किए गए, पोर्ट पर सुनें। How to configure an instance of SQL Server to listen on a specific TCP port or dynamic port देखें। अपने एनएटी आगे है कि पोर्ट। फिर अपने क्लाइंट में इस पोर्ट का उपयोग कनेक्शन स्ट्रिंग में स्पष्ट रूप से करें। 1433, मानक बंदरगाह का उपयोग न करें, क्योंकि मुझे लगता है कि एनएटी से पहले सार्वजनिक इंटरनेट है और 1433 सभी प्रकार के बॉट्स और वाइल क्लस्टर से लगातार और लगातार स्कैन के अधीन है।

+1

+1, और 1433 धीरे-धीरे समाप्त हो रहा है क्योंकि इसका उपयोग * डिफ़ॉल्ट * इंस्टेंस (कोई इंस्टेंस नाम नहीं) के लिए किया जाता है, और माइक्रोसॉफ्ट अत्यधिक अनुशंसा करता है कि कभी भी डिफ़ॉल्ट उदाहरण (सुरक्षा कारणों से) का उपयोग न करें। इसलिए, जब भी आपके पास नामित उदाहरण हो, 1433 कभी प्रासंगिक नहीं होगा। –

3

SQL सर्वर कॉन्फ़िगरेशन प्रबंधक का उपयोग कर स्थिर पोर्ट पर चलाने के लिए नामित इंस्टेंस कॉन्फ़िगर करें। विन्यास प्रबंधक में, SQL Server Network Configuration -> Protocols for <named instance> -> TCP/IP -> Properties

enter image description here

तो कनेक्शन स्ट्रिंग में नाम उदाहरण के लिए होस्ट नाम और बंदरगाह की आपूर्ति। होस्ट नाम और पोर्ट संख्या (यह मानते हुए होस्ट नाम Test है और सुनने बंदरगाह 1492 है) निम्न स्वरूप में निर्दिष्ट कर रहे हैं:

... Server='Test,1492'; ...

संबंधित मुद्दे