एक अलग डोमेन में विंडोज ऑथेंटिकेशन के साथ SQL सर्वर से कनेक्ट करें


73

मैं एक अलग डोमेन में एक वीपीएन पर एक दूरस्थ SQL सर्वर से कनेक्ट करने का प्रयास कर रहा हूं। जब मैं SQL सर्वर पर सर्वर नाम दर्ज करता हूं और अपने स्कूल द्वारा आवश्यक कुछ अतिरिक्त सामान जोड़ने के लिए अतिरिक्त कनेक्शन पैरामीटर का चयन करता हूं:

Integrated Security=SSPI; User ID=DOMAIN\username; Password=Password

मुझे निम्नलिखित त्रुटि मिलती है:

लॉगिन विफल। लॉगिन एक अविश्वसनीय डोमेन से है और इसका उपयोग विंडोज प्रमाणीकरण के साथ नहीं किया जा सकता है।


विंडोज क्रेडेंशियल मैनेजर समाधान के साथ एकमात्र समस्या यह है कि यदि आपके पास बहुत से डेटाबेस हैं जिनका आप समर्थन करते हैं, तो आपको हर एक के लिए एक प्रविष्टि और आपके डोमेन पासवर्ड को अपडेट करने के लिए उन्हें हर बार अपडेट करना होगा। कुछ लोगों के लिए जो हर 30 - 60 दिनों में हो सकते हैं।
स्मेहेफी

यह पोस्ट कुछ हद तक संबंधित है।
RBT

@smehaffie आप अपने पासवर्ड को बनाए रखने के लिए आसानी से स्क्रिप्टिंग और "cmdkey / add" कमांड का उपयोग कर सकते हैं - यह भी अपडेट करता है।
मिस्टर मागू

जवाबों:


70

आप किसी अनुप्रयोग के कनेक्शन स्ट्रिंग से सादे पाठ में विंडोज क्रेडेंशियल पास करने का प्रयास कर रहे हैं। यह बस नहीं है कि विंडोज प्रमाणीकरण कैसे काम करता है, और मोटे तौर पर उद्देश्य को हरा देता है।

आप अपने डोमेन में एक ही पासवर्ड के साथ एक ही उपयोगकर्ता नाम नहीं बना सकते हैं, और अपेक्षा करते हैं कि जादुई रूप से काम कर सकते हैं। डोमेन नाम अभी भी मान्यता का हिस्सा है - आपकी मशीन को या तो डोमेन का हिस्सा होना चाहिए, या आपकी मशीन जिस डोमेन में है वह स्कूल के डोमेन द्वारा विश्वसनीय होना चाहिए।

मुझे पता है कि केवल वर्कअराउंड SSMS के लिए है, और इस जवाबrunas /netonly में वर्णित चाल है । यह आपके द्वारा निर्दिष्ट लॉगिन के रूप में SSMS को लॉन्च करने में Windows को बेवकूफ बनाता है, बजाय इसके कि आप (यह कुछ ऐसा नहीं है जिसे आप SSMS के कनेक्शन गुण संवाद में सेट कर सकते हैं, यह है कि आपको कमांड लाइन या शॉर्टकट से SSMS लॉन्च करने की आवश्यकता है):

runas /netonly /user:domain\username "C:\path_to\ssms.exe"

यह आपको दूरस्थ डोमेन में आपके पासवर्ड के लिए संकेत देगा। ऐसा लगेगा कि यह आपके स्थानीय विंडोज क्रेडेंशियल्स का उपयोग कर रहा है, लेकिन ऐसा नहीं है

यह संभव है कि विज़ुअल स्टूडियो के साथ भी काम करेगा, लेकिन मैं वास्तव में नहीं जानता।

तो आपके विकल्प हैं:

  • विश्वविद्यालय आपको अपनी मशीन को डोमेन में शामिल करने की अनुमति देता है
  • विश्वविद्यालय को अपने डोमेन को एक विश्वसनीय डोमेन के रूप में जोड़ें
  • वीपीएन के अंदर एक जंप बॉक्स है जो आपको आरडीपी की अनुमति देता है और SQL सर्वर मशीन से सीधे कनेक्ट होने वाले टूल का उपयोग करता है
  • SQL प्रमाणीकरण का उपयोग करें
  • runas /netonlyदृश्य स्टूडियो के साथ चाल की कोशिश करो
  • बस runas /netonlySSMS के साथ चाल का उपयोग करें

runasबात करता है दृश्य स्टूडियो के साथ काम करते हैं।
डैनियल हतमाकर

क्या कमांड प्रॉम्प्ट के बिना इस व्यवहार की नकल करने का कोई तरीका है?
गिलेस लेसिक

1
@Gilles आप एक बैच फ़ाइल बनाने के लिए और कर सकते हैं बैच फ़ाइल डबल-क्लिक करें, या आपको लगता है कि स्ट्रिंग का उपयोग और शायद एक शॉर्टकट बना सकते हैं
हारून बर्ट्रेंड

102

एक और तरीका है, जो अब मैं runas /netonlyविधि के लिए प्राथमिकता में उपयोग करता हूं ।

आप विंडोज कंट्रोल पैनल में पाए गए क्रेडेंशियल मैनेजर का उपयोग करके विंडोज में अपनी प्रोफाइल में क्रेडेंशियल्स जोड़ सकते हैं।

  1. क्रेडेंशियल मैनेजर खोलें
  2. "एक विंडोज क्रेडेंशियल जोड़ें" पर क्लिक करें
  3. "इंटरनेट या नेटवर्क एड्रेस" फ़ील्ड को उस एसक्यूएल इंस्टेंस के नाम और पोर्ट नंबर के साथ भरें, जिसे आप क्रेडेंशियल स्टोर करना चाहते हैं।

    उदाहरण: UniServer:1433(1433 डिफॉल्ट पोर्ट है, आपको एक अलग पोर्ट की आवश्यकता हो सकती है, खासकर यदि आप एक नामित उदाहरण से कनेक्ट कर रहे हैं)

  4. "उपयोगकर्ता नाम" को पॉप्युलेट करें (डोमेन को शामिल करना न भूलें MYDOMAIN\MYUSER)
  5. "पासवर्ड" पॉप्युलेट करें
  6. ओके पर क्लिक करें

यदि आपके पास सर्वर का नाम, पोर्ट और लॉगिन विवरण सही है, तो अब आपको अधिकांश क्लाइंट टूल, एसएसएमएस, एक्सेल, जो भी हो, से विंडोज ऑथेंटिकेशन का उपयोग करने में सक्षम होना चाहिए। वे सभी संग्रहीत क्रेडेंशियल्स का उपयोग करेंगे।

युक्ति: कभी-कभी क्रेडेंशियल्स जोड़ते समय आपको सर्वर के लिए FQN का उपयोग करने की आवश्यकता होती है। उदाहरण के लिए UniServer.UniDomain.org:1433, यह सब आपके नेटवर्क विशेष पर निर्भर करता है।

यहाँ विधि का एक त्वरित डेमो है: http://youtu.be/WiVBPsqB9b4

यह मेरे डेस्कटॉप से ​​एक वीएम में चल रहे SQL सर्वर से कनेक्ट करने के लिए (और असफल होने) का एक स्क्रीन ग्रैब है, फिर आवश्यक क्रेडेंशियल्स को जोड़ने और फिर से कोशिश कर रहा है - सफलतापूर्वक।

युक्ति: संग्रहीत क्रेडेंशियल को बनाने और अपडेट करने के लिए "cmdkey / add" कमांड का उपयोग करें।


दिलचस्प! यह इस बात पर निर्भर करता है कि आपके ग्राहक मशीन को क्या लगता है कि रिमोट मशीन कहलाती है बजाय इसके कि वास्तव में क्या कहा जा सकता है। मैंने आईपी पते के लिए अपनी होस्ट फ़ाइल में एक आविष्कार की गई प्रविष्टि ("verysillytest.mwardm") डाल दी है (जैसा कि हम उन डोमेन के बाहर से पहुँच रहे हैं जो करने के लिए अभ्यस्त हैं) और नाम में क्रेडेंशियल सेट करें "verysillytest.mwardm:" 1433 "। मैं तब होस्टनाम या आईपी पते का उपयोग करके खुशी से (क्वेरी ऐप नामक एक छोटे से ऐप से) कनेक्ट कर सकता हूं।
mwardm

@ मैवर्डम हां, यही कारण है कि मैं पिंग या nslookup का उपयोग करने की सलाह देता हूं क्योंकि यह आपको वह नाम बताएगा जैसा आपको ऊपरी / निचले मामले की बारीकियों सहित उपयोग करने की आवश्यकता है।
मिस्टर मागू

आह, अच्छी तरह से "पिंग-ए" ने मुझे कुछ भी नहीं दिया और nslookup ने (तुरंत) काम नहीं किया क्योंकि मैं डोमेन के DNS सर्वर का उपयोग नहीं कर रहा था। चिंता न करें, मैं वास्तव में आईपी पते (और लॉगिन) को जानने के लिए और अपना नाम बनाने में सक्षम होने की लचीलापन पसंद करता हूं!
मस्तूल

1
बहुत बढ़िया, यह काम करता है! मुझे आश्चर्य है - क्या यह उस तरह से काम करने वाला है या यह एक बग है या SQL सर्वर की तरफ से कोई डिज़ाइन विफल है? Microsoft या Microsoft के लोग हर जगह विज्ञापन देते हैं कि आपके पास एक डोमेन कनेक्टेड मशीन होनी चाहिए, अन्यथा SQL सर्वर से कनेक्ट करने का कोई तरीका नहीं है जो केवल डोमेन क्रेडेंशियल्स को स्वीकार करने के लिए सेट किया गया है।
दाविद फेरेंस्की रोगुज़न

BTW मैं कहूंगा कि इस उत्तर को स्वीकार किया जाना चाहिए, क्योंकि यह एक वास्तविक समाधान लगता है और अन्य उत्तर एक वर्कअराउंड की तरह है।
दाविद फेरेन्स्की रोगोजान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.