Ho problemi a connettere Ruby a Microsoft SQL Server. Sto usando Mac OS X, ma l'ambiente di destinazione è Ubuntu Linux.Ruby che si connette a SQL Server
Ecco che cosa ho provato:
- Installare unixODBC
- Installare FreeTDS
- utilizzate le opzioni
--with-unixodbc=/usr/local/etc
--with-tdsver=8.0
- utilizzate le opzioni
Ho poi avuto questi file nella /usr/local/etc
:
odbc.ini
odbcinst.ini
freetds.conf
ho aggiunto un riferimento al driver FreeTDS nel file odbcinst.ini
al mio file del driver ODBC in questo modo:
;
; odbcinst.ini
;
;
[FreeTDS]
Driver = /usr/local/lib/libtdsodbc.so
Quindi ho configurato il server nel file freetds.conf
in questo modo:
# Aries database server (SQL Server 2008)
[aries-db1]
host = xx.xx.xx.xx
port = 1433
tds version = 8.0
E finalmente ho aggiunto il DSN ODBC nel file odbc.ini
in questo modo:
[aries-db1]
Driver = FreeTDS
Description = ODBC Connection via FreeTDS
Trace = 1
Servername = aries-db1
Database = MY_DB
UID = user1
PWD = pass1
posso verificare che il mio server è in linea e la porta è aperta (via telnet & controllo della porta yougetsignal.com).
Come prova, ho fatto questo:
tsql -S aries-db1 -U user1 -P pass1
e sembrava collegare bene. Il passaggio di valori non validi ha comportato errori previsti.
Così alla fine alla mia domanda:
Come posso estendere questo a Ruby? Niente di quello che ho provato finora ha funzionato. Ho provato Sequel in questo modo:
require 'sequel'
Sequel.connect('aries-db1')['select * from foo'].all
E ottengo un errore come questo:
Sequel::DatabaseConnectionError: ODBC::Error: S1000 (0) [unixODBC][FreeTDS][SQL Server]Unable to connect to data source
Il che mi dice che sta trovando la mia configurazione del driver in modo corretto, ma per qualche ragione non riesce a connettersi.
Ho anche provato DBI in questo modo:
DBI.connect('DBI:ODBC:aries-db1')
e ottengo un errore simile.
Qualche suggerimento? Mi sento molto vicino, ma non sono sicuro di cosa provare per risolvere il problema.
'posso verificare che il mio server è online e la porta è aperta (via telnet e yougetsignal.com controllo porta). 'Spiacente, non posso rispondere alla tua domanda. Tuttavia, è necessario sapere che l'esposizione di SQL Server a Internet può portare a un problema di sicurezza. Vari robot eseguono la scansione di SQL Server e tentano di collegarsi/attaccarlo. –
Devi usare la risonanza magnetica? Non puoi usare JRuby e JDBC? – Luke
@will - Grazie per avermelo fatto notare. Sono molto consapevole di quanto sia male, ma nel sistema di produzione lo bloccherò per indirizzo IP e cambiando la porta. Sto solo provando a convalidare che tutti questi pezzi funzionano insieme. –