Tengo problemas para conectar Ruby a Microsoft SQL Server. Estoy ejecutando Mac OS X, pero el entorno de destino es Ubuntu Linux.Ruby conectado a SQL Server
Aquí es lo que he intentado:
- Instalar unixODBC
- Instalar FreeTDS
- utilizan las opciones de
--with-unixodbc=/usr/local/etc
--with-tdsver=8.0
- utilizan las opciones de
entonces que tenía en estos archivos /usr/local/etc
:
odbc.ini
odbcinst.ini
freetds.conf
he añadido una referencia al controlador FreeTDS en el archivo odbcinst.ini
a mi archivo del controlador ODBC de la siguiente manera:
;
; odbcinst.ini
;
;
[FreeTDS]
Driver = /usr/local/lib/libtdsodbc.so
Luego configuré el servidor en el archivo freetds.conf
así:
# Aries database server (SQL Server 2008)
[aries-db1]
host = xx.xx.xx.xx
port = 1433
tds version = 8.0
Y finalmente añadió el ODBC DSN en el archivo odbc.ini
así:
[aries-db1]
Driver = FreeTDS
Description = ODBC Connection via FreeTDS
Trace = 1
Servername = aries-db1
Database = MY_DB
UID = user1
PWD = pass1
puedo comprobar que mi servidor está en línea y el puerto está abierto (a través de telnet & verificación del puerto yougetsignal.com).
Como prueba, lo hice:
tsql -S aries-db1 -U user1 -P pass1
y parecía conectar muy bien. Pasar en valores no válidos resultó en errores esperados.
Así que, finalmente, a mi pregunta:
¿Cómo extender esto a Ruby? Nada de lo que he intentado hasta ahora ha funcionado. Probé secuela de esta manera:
require 'sequel'
Sequel.connect('aries-db1')['select * from foo'].all
Y consigo un error como este:
Sequel::DatabaseConnectionError: ODBC::Error: S1000 (0) [unixODBC][FreeTDS][SQL Server]Unable to connect to data source
¿Qué me dice que es encontrar mi configuración del controlador correctamente, pero por alguna razón no se puede conectar.
También probé DBI así:
DBI.connect('DBI:ODBC:aries-db1')
y recibo un error similar.
¿Alguna sugerencia? Siento que estoy muy cerca, pero no estoy seguro de qué probar a continuación para solucionar este problema.
'puedo comprobar que mi servidor es en línea y el puerto está abierto (a través de telnet y yougetsignal.com check del puerto). Lo siento, no puedo responder su pregunta. Sin embargo, debe saber que exponer SQL Server a Internet puede generar un problema de seguridad. Varios bots escanean SQL Server e intentan conectarlo/atacarlo. –
¿Tienes que usar MRI? ¿No puedes usar JRuby y JDBC? – Luke
@will - Gracias por señalarlo. Soy muy consciente de lo malo que es eso, pero en el sistema de producción lo bloquearé por la dirección IP y cambiaré el puerto. Solo intento validar que todas estas piezas funcionen juntas. –