2011-09-26 4 views
5

मैं Redhat Linux को Microsoft SQL Server 2008 से कनेक्ट करने का प्रयास कर रहा हूं। मुझे इसे विंडोज़ (मेरी टेस्ट मशीन) पर सेट करने में समस्या हो रही है लेकिन अब मुझे इसे तैनात करने की आवश्यकता है लिनक्स मशीन जहां यह उत्पादन में होगी।रेल पर रूबी के लिए Redhat से SQL Server 2008 को कनेक्ट करना

तो मैं स्थापित किया है unixODBC और FreeTDS (प्रयास की एक बहुत कुछ के साथ, सुनिश्चित करें कि भी नहीं इसे सही ढंग से स्थापित किया गया था, तो: एस), और कहा कि के परिणाम मैं /usr/local/etc में 3 फ़ाइलें है कि है:

odbc.ini 
odbcinst.ini 
freetds.conf 

मैं तो freetds.conf फ़ाइल संपादित करते हैं और इस मैं क्या जोड़ा है:

[sqlServer] 
host = servername 
port = 4113 
instance = sqlServer 
tds version = 8.0 
client charset = UTF-8 

मैं अपने डीबीए से पोर्ट संख्या पता लगाने के लिए, के रूप में यह एसक्यूएल सर्वर में गतिशील करने के लिए सेट कर दिया जाता था 2008

मेरे odbcinst.ini फ़ाइल इस तरह दिखता है:

[sqlServer] 
Driver = FreeTDS 
Description  = ODBC connection via FreeTDS 
Trace   = 1 
Servername  = sqlServer 
Database  = RubyApp 

तो अब मैं अगर वहाँ

tsql -S sqlServer -U test -P test उपयोग करके किसी भी संबंध नहीं है देखने के लिए जोड़ने की कोशिश की:

[FreeTDS] 
Description  = TDS driver (Sybase/MS SQL) 
Driver   = /usr/local/lib/libtdsodbc.so 
Setup   = /usr/local/lib/libtdsS.so 
CPTimeout  = 
CPReuse   = 
FileUsage  = 1 

और मेरे odbc.ini फ़ाइलें इस तरह दिखता है , हालांकि यह मुझे केवल निम्न त्रुटि देता है:

locale is "en_US.UTF-8" 
locale charset is "UTF-8" 
using default charset "UTF-8" 
Error 20013 (severity 2): 
     Unknown host machine name. 
There was a problem connecting to the server 

जब मैं isql का उपयोग कर, isql -v sqlServer test test कर की कोशिश की, कि निम्न त्रुटि बाहर थूका:

[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source 
[01000][unixODBC][FreeTDS][SQL Server]Unknown host machine name. 
[ISQL]ERROR: Could not SQLConnect 
कोई भी विचार

क्या मैं गलत कर किया जा सकता है?

उत्तर

0

आप एसक्यूएल सर्वर होस्ट नाम या freetds.conf फ़ाइल में आईपी पते की जरूरत नहीं होगी -

[sqlServer] 
host = 192.168.0.99 
: 
+0

हाँ मैं इसकी जरूरत है, लेकिन सिर्फ सुरक्षा उद्देश्यों के लिए मैं 'के रूप में असली servername – omarArroum

1

आप TSQL साथ कनेक्ट नहीं कर सकते हैं, तो अपने एसक्यूएल सर्वर के साथ या में एक कनेक्शन मुद्दा है freetds.conf

पहले tsql -LH [SQL server IP]

# tsql -LH 127.0.0.1 
    ServerName HOME 
InstanceName INSTANCE1 
IsClustered No 
    Version 10.50.2500.0 
     tcp 1434 

का उपयोग कर यदि यह काम नहीं करता है बंदरगाह और नाम उदाहरण की पुष्टि करें, आपकी सर्वर और SQL सर्वर के बीच एक कनेक्शन मुद्दा है।

यदि यह काम करता है, तो freetds.conf में टीसीपी से मिलान करने के लिए अपने पोर्ट को सेट करें।

[TDS] 
host = 127.0.0.1 
port = 1434 
tds version = 7.0 

उदाहरण आपके odbc.ini

[MSSQLExample] 
Description = Example server 
Driver = FreeTDS 
Trace = No 
Server = 127.0.0.1\INSTANCE1 
Database = MyDatabase 
port = 1434 

में सेट किया गया है और अगर सब और विफल रहता, osql का उपयोग कर कुछ प्रतिक्रिया जिस पर हिस्सा काम नहीं कर रहा प्राप्त करने की कोशिश।

# osql -S MSSQLExample -U USERNAME -P PASSWORD 

और TSQL त्रुटि संदेश पर कुछ अच्छी जानकारी के लिए: http://freetds.schemamania.org/userguide/confirminstall.htm

+1

करने का विरोध किया इस एक ने लिखा servername': सर्वर = 127.0 .0.1 \ INSTANCE1 मेरे बेकन को बचाया! – DerStoffel

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