2011-01-13 24 views
12

मुझे रुबी को माइक्रोसॉफ्ट एसक्यूएल सर्वर से कनेक्ट करने में समस्याएं आ रही हैं। मैं मैक ओएस एक्स चला रहा हूं, लेकिन लक्ष्य पर्यावरण उबंटू लिनक्स है।SQL सर्वर से कनेक्ट रूबी

यहाँ मैं क्या कोशिश की है:

  • स्थापित unixODBC
  • स्थापित FreeTDS
    • इस्तेमाल किया विकल्पों --with-unixodbc=/usr/local/etc--with-tdsver=8.0

मैं तो में इन फ़ाइलों था /usr/local/etc:

  • odbc.ini
  • odbcinst.ini
  • freetds.conf

मैं इस तरह मेरी ODBC ड्राइवर फाइल करने के लिए odbcinst.ini फ़ाइल में FreeTDS ड्राइवर के लिए एक संदर्भ कहा:

; 
; odbcinst.ini 
; 
; 
[FreeTDS] 
Driver = /usr/local/lib/libtdsodbc.so 

फिर मैंने कॉन्फ़िगर किया इस तरह freetds.conf फ़ाइल में सर्वर:

# Aries database server (SQL Server 2008) 
[aries-db1] 
     host = xx.xx.xx.xx 
     port = 1433 
     tds version = 8.0 

और अंत में मैं odbc.ini फ़ाइल इस तरह में ODBC DSN कहा:

[aries-db1] 
Driver  = FreeTDS 
Description = ODBC Connection via FreeTDS 
Trace  = 1 
Servername = aries-db1 
Database = MY_DB 
UID   = user1 
PWD   = pass1 

इस बात की पुष्टि कर सकते हैं कि मेरे सर्वर ऑनलाइन है और बंदरगाह खुला है (टेलनेट & yougetsignal.com पोर्ट चेक के माध्यम से)।

एक परीक्षण के रूप में, मैं इस किया था:

tsql -S aries-db1 -U user1 -P pass1 

और यह सिर्फ ठीक कनेक्ट करने के लिए लग रहा था। अमान्य मानों में गुजरने के परिणामस्वरूप अपेक्षित त्रुटियां हुईं।

तो अंत में मेरे सवाल का:

मैं कैसे रूबी को यह विस्तार करते हैं? मैंने अभी तक कुछ भी नहीं किया है। मैं इस तरह अगली कड़ी की कोशिश की:

require 'sequel' 
Sequel.connect('aries-db1')['select * from foo'].all 

और मैं इस तरह एक त्रुटि प्राप्त:

Sequel::DatabaseConnectionError: ODBC::Error: S1000 (0) [unixODBC][FreeTDS][SQL Server]Unable to connect to data source 

कौन मुझसे कहता है कि यह मेरे ड्राइवर विन्यास सही ढंग से लग रहा है, लेकिन किसी कारण से कनेक्ट नहीं कर सकता।

मैं भी इस तरह DBI की कोशिश की:

DBI.connect('DBI:ODBC:aries-db1') 

और मैं एक ऐसी ही त्रुटि मिलती है।

कोई सुझाव? मुझे लगता है कि मैं बहुत करीब हूं, लेकिन मुझे यकीन नहीं है कि समस्या निवारण के आगे क्या प्रयास करें।

+1

'मैं पुष्टि कर सकते हैं कि अपने सर्वर है ऑनलाइन और बंदरगाह खुला है (टेलनेट और yougetsignal.com पोर्ट चेक के माध्यम से)। क्षमा करें, मैं आपके प्रश्न का उत्तर नहीं दे सकता। हालांकि आपको पता होना चाहिए कि इंटरनेट पर SQL सर्वर का खुलासा करने से सुरक्षा समस्या उत्पन्न हो सकती है। SQL सर्वर के लिए विभिन्न बॉट स्कैन करते हैं और इसे कनेक्ट/आक्रमण करने का प्रयास करेंगे। –

+0

क्या आपको एमआरआई का उपयोग करना है? क्या आप जेआरबी और जेडीबीसी का उपयोग नहीं कर सकते? – Luke

+0

@ विल्ल - इसे इंगित करने के लिए धन्यवाद। मुझे पता है कि यह कितना बुरा है, लेकिन उत्पादन प्रणाली में मैं इसे आईपी पते से बंद कर दूंगा और बंदरगाह बदल रहा हूं। मैं सिर्फ यह सत्यापित करने की कोशिश कर रहा हूं कि ये सभी टुकड़े एक साथ काम करते हैं। –

उत्तर

13

https://github.com/rails-sqlserver/tiny_tds TinyTds पर एक नजर है - रूबी के लिए एक, आधुनिक सरल और तेजी से FreeTDS पुस्तकालय डीबी लाइब्रेरी का उपयोग

इसकी स्थापित करने के लिए और आसानी से इस्तेमाल आसान

+0

मजेदार मुझे यह मेरी सारी खोज में नहीं मिला। मैं इसे आज़मा दूंगा और आपको बताऊंगा कि मुझे क्या मिल रहा है। –

+0

यह एक चैंप की तरह काम किया! सुझाव के लिए धन्यवाद, यह अच्छी तरह से करेगा। –

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