2011-10-04 3 views
10

मैं रेल 3.1 का उपयोग करने की कोशिश कर रहा हूं। विंडोज मशीन पर activerecord-sqlserver-adapter (3.1.1) और tiny_tds (0.4.5) के साथ। TinyTDS के बारे में पढ़ने और फ्रीटीडीएस के उपयोग में ऐसा लगता है कि मैं एक डोमेन-योग्य नाम उपयोगकर्ता नाम (जैसे DOMAIN \ userbob) के रूप में डालकर एकीकृत सुरक्षा (उर्फ विंडोज इंटीग्रेटेड सुरक्षा/एनटीएलएम) का उपयोग कर सकता हूं। लेकिन दस्तावेज़ अभी भी मुझे डेटाबेस डोमेन फ़ाइल में अपना डोमेन उपयोगकर्ता का पासवर्ड टाइप करना चाहते हैं। यह बुरा अभ्यास है क्योंकि यह असुरक्षित है और एकल-चिह्न का लाभ नहीं लेता है, जो एकीकृत सुरक्षा के बिंदु का हिस्सा है।TinyTDS * के साथ activerecord-sqlserver-adapter का उपयोग कैसे करें * और * विंडोज़ पर एक एकीकृत सुरक्षा कनेक्शन * सादे पाठ में पासवर्ड सहेजने के बिना

क्या मैं फ़ाइल में सादा पाठ में पासवर्ड सहेजे बिना कनेक्ट कर सकता हूं? जैसे

developement: 
    adapter: sqlserver 
    mode: dblib 
    dataserver: localhost 
    database: dev_db 
    username: DOMAIN\userbob 
# password: no_no_please_dont_make_me_type_it_here 

लेकिन, भले ही मैं एक पासवर्ड मैं निम्नलिखित त्रुटि मिलती है डाल:

TinyTds::Error: Unable to connect: Adaptive Server is unavailable or does not exist 
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/tiny_tds-0.4.5-x86-mingw32/lib/tiny_tds/client.rb:60:in `connect' 
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/tiny_tds-0.4.5-x86-mingw32/lib/tiny_tds/client.rb:60:in `initialize' 

मैं जानता हूँ कि मेरे सर्वर चल रहा है और वर्तमान उपयोगकर्ता संदर्भ कनेक्ट कर सकते हैं, क्योंकि इस काम करता है:

sqlcmd -S localhost -d dev_db -E 

कोई अंतर्दृष्टि? क्या यह संभव है? यदि नहीं, तो होना चाहिए।

+0

मैं एसएसओ-समस्या के लिए भी एक समाधान की तलाश में हूं - क्या आपने इस दौरान अपनी समस्या का समाधान किया था? मुझे त्रुटि मिलती है 'TinyTds :: त्रुटि: उपयोगकर्ता' xxx 'के लिए लॉगिन विफल रहा।उपयोगकर्ता एक विश्वसनीय SQL सर्वर कनेक्शन से संबद्ध नहीं है। '। अगर मैं पासवर्ड जोड़ता हूं, तो मुझे कनेक्शन मिलता है। – knut

+1

काम के साथ, मैंने एक नया त्रुटि संदेश प्राप्त करने में कामयाब रहा है, 'लॉगिन विफल हुआ। लॉगिन एक अविश्वसनीय डोमेन से है और इसका उपयोग विंडोज प्रमाणीकरण के साथ नहीं किया जा सकता है। हालांकि, यह भ्रमित है क्योंकि उपयोगकर्ता खाता और सिस्टम एक ही डोमेन_ पर हैं। –

उत्तर

1

मुझे लगता है कि कनेक्शन बनाने वाला कोड प्रक्रिया को SQL सर्वर के माध्यम से डिफ़ॉल्ट क्रेडेंशियल पास करने के बजाय क्रेडेंशियल्स द्वारा प्रदान किए गए सुरक्षा संदर्भ का प्रतिरूपण करने की कोशिश कर रहा है।

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

मुझे TinyTDS/FreeTDS नहीं पता, शायद शून्य या खाली प्रमाण-पत्र इसे डिफ़ॉल्ट सुरक्षा संदर्भ का उपयोग करेंगे। प्रयास करें:

developement: 
    adapter: sqlserver 
    mode: dblib 
    dataserver: localhost 
    database: dev_db 

या

developement: 
    adapter: sqlserver 
    mode: dblib 
    dataserver: localhost 
    database: dev_db 
    username: 
    password: 
+0

सुझाव के लिए धन्यवाद। अनुभव के आधार पर, खाली प्रमाण-पत्र 'sa' खाते का उपयोग करने का प्रयास करेंगे, जो मैं नहीं चाहता (_ सिंगल-साइन-ऑन_ नहीं)। लेकिन यह बैक-स्लैश (यानी एक डोमेन खाता) वाले उपयोगकर्ता नाम का उपयोग करने जैसा दिखता है, विंडोज प्रमाणीकरण w/o पासवर्ड का उपयोग करने का प्रयास करता है। बहुत बुरा यह मेरे डोमेन पर काम नहीं करता है। फ़िर भी सहायता के लिए धन्यवाद। –

2

"एसक्यूएल सर्वर नेटवर्क कॉन्फ़िगरेशन" एसक्यूएल सर्वर कॉन्फ़िगरेशन मैनेजर उपयोगिता में में टीसीपी/आईपी सक्षम करें। फिर SQL सर्वर सेवा को पुनरारंभ करें।

सुरक्षा के संबंध में आपको अपने प्रमाण-पत्रों की आपूर्ति करने की आवश्यकता होगी अन्यथा यह खाता का उपयोग करेगा।

+1

यह समस्या का समाधान नहीं करता है, यह केवल 'अत्याधुनिक डोमेन से है' के पक्ष में 'अनुकूली सर्वर अनुपलब्ध' त्रुटि से पहले मुझे प्राप्त करता है। ऊपर टिप्पणी देखें। हालांकि, मदद करने के लिए धन्यवाद। –

2

स्पष्ट रूप से SQL सर्वर 2008 डिफ़ॉल्ट रूप से Windows प्रमाणीकरण की अनुमति देने के लिए सेट किया गया है। इसे बदलने के लिए आपको प्रबंधन स्टूडियो खोलना है, अपने सर्वर पर राइट क्लिक करें और गुण चुनें। सुरक्षा का चयन करें और सर्वर प्रमाणीकरण के तहत "SQL सर्वर और Windows प्रमाणीकरण मोड" पर क्लिक करें। यह आपको कम से कम सर्वर से कनेक्ट करने की अनुमति देगा जब तक कि TinyTDS Windows प्रमाणीकरण की अनुमति देने के लिए आवश्यक परिवर्तन नहीं करता है।

0

कोशिश का उपयोग करने के

developement: 
    adapter: sqlserver 
    mode: dblib 
    dataserver: localhost\SQLEXPRESS 
    database: dev_db 
    username: DOMAIN\userbob 

वरना आप अपने की एसक्यूएल सर्वर में 2 संस्करण authentification सेट करूँ? फिर sa उपयोगकर्ता से कनेक्ट करने का प्रयास करें ...

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