2011-09-26 16 views
5

Estoy tratando de conectar Redhat Linux a un Microsoft SQL Server 2008. Ya tuve problemas para configurarlo en Windows (mi máquina de prueba) pero ahora tengo que implementarlo en la máquina Linux donde estará en producción.Conectando Redhat a SQL Server 2008 para Ruby on Rails

Así que he instalado unixODBC y FreeTDS (con mucho esfuerzo, ni siquiera seguro de si se ha instalado correctamente: S), y el resultado de esto es que tengo 3 archivos en /usr/local/etc:

odbc.ini 
odbcinst.ini 
freetds.conf 

luego edité el archivo freetds.conf y esto es lo que ha añadido:

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

que tenía que averiguar el número de puerto de mi DBA, como se establece en dinámica en SQL Server 2008.

Mi archivo odbcinst.ini se ve así:

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

y mis odbc.ini archivos se parece a esto:

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

Así que ahora he intentado conectar para ver si hay alguna conexión mediante

tsql -S sqlServer -U test -P test , sin embargo, eso solo me da el siguiente error:

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 

Cuando he intentado usar isql, haciendo isql -v sqlServer test test, que escupió el siguiente error:

[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 

Alguna idea de lo que podría estar haciendo mal?

Respuesta

0

No ¿Necesitará el nombre de host de SQL Server o la dirección IP en el archivo freetds.conf -

[sqlServer] 
host = 192.168.0.99 
: 
+0

Sí que lo necesita, pero sólo con fines de seguridad escribí 'servername' en comparación con el nombre del servidor real, – omarArroum

1

Si no puede conectar con tsql, entonces hay un problema de conexión con el servidor SQL o en freetds.conf.

En primer lugar comprobar el puerto y el nombre de la instancia con tsql -LH [SQL server IP]

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

Si esto no funciona, hay un problema de conexión entre el servidor y el servidor SQL.

Si funciona, configure el puerto para que coincida con tcp anterior en freetds.conf.

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

instancia se establece en su odbc.ini

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

Y si todo lo demás falla, pruebe a utilizar osql obtener alguna información sobre qué parte no está funcionando.

# osql -S MSSQLExample -U USERNAME -P PASSWORD 

Y por alguna buena información sobre los mensajes de error TSQL: http://freetds.schemamania.org/userguide/confirminstall.htm

+1

éste: Servidor = 127,0 .0.1 \ INSTANCE1 ¡Salvó mi tocino! – DerStoffel