2011-09-26 14 views
5

Sto provando a connettere Redhat Linux a Microsoft SQL Server 2008. Ho già avuto problemi a configurarlo su Windows (la mia macchina di prova), ma ora ho bisogno di installarlo su la macchina Linux in cui sarà in produzione.Connessione Redhat a SQL Server 2008 per Ruby on Rails

Così ho installato unixODBC e FreeTDS (con un sacco di fatica, non sono nemmeno sicuro se è stato installato correttamente: S), e il risultato di ciò è che ho 3 file in /usr/local/etc:

odbc.ini 
odbcinst.ini 
freetds.conf 

ho poi modificato il file freetds.conf e questo è quello che ho aggiunto:

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

ho dovuto trovare il numero di porta dal mio DBA, in quanto è impostato su dinamico in SQL Server 2008.

Il mio file odbcinst.ini si presenta così:

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

e miei file odbc.ini assomiglia a questo:

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

Così ora ho provato a collegare per vedere se c'è qualche connessione utilizzando

tsql -S sqlServer -U test -P test , tuttavia mi dà solo il seguente errore:

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 

Quando ho provato ad utilizzare isql, facendo isql -v sqlServer test test, che sputò il seguente errore:

[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 

Tutte le idee che cosa potrei fare male?

risposta

0

non avrete bisogno il nome host di SQL Server o l'indirizzo IP nel file freetds.conf -

[sqlServer] 
host = 192.168.0.99 
: 
+0

Sì ho bisogno, ma solo per motivi di sicurezza ho scritto 'ServerName' in contrasto con il vero nome server – omarArroum

1

Se non è possibile connettersi con TSQL, poi c'è un problema di connessione con il server SQL o in freetds.conf.

prima verificare la porta e istanza denominata utilizzando tsql -LH [SQL server IP]

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

Se questo non funziona, c'è un problema di connessione tra il server e il server SQL.

Se funziona, impostare la porta in modo che corrisponda a tcp in alto a freetds.conf.

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

istanza è impostata nel odbc.ini

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

E se tutto il resto fallisce, provare a utilizzare osql per ottenere un feedback da quale parte non funziona.

# osql -S MSSQLExample -U USERNAME -P PASSWORD 

E per alcune utili informazioni sui messaggi di errore TSQL: http://freetds.schemamania.org/userguide/confirminstall.htm

+1

questo: server = 127.0 .0.1 \ INSTANCE1 Salvato il mio bacon! – DerStoffel