Je rencontre des problèmes pour connecter Ruby à Microsoft SQL Server. J'utilise Mac OS X, mais l'environnement cible est Ubuntu Linux.Ruby se connecter à SQL Server
Voici ce que j'ai essayé:
- Installer unixODBC
- Installer FreeTDS
- utilisé les options
--with-unixodbc=/usr/local/etc
--with-tdsver=8.0
- utilisé les options
j'avais alors ces fichiers /usr/local/etc
:
odbc.ini
odbcinst.ini
freetds.conf
J'ai ajouté une référence au pilote FreeTDS dans le fichier odbcinst.ini
à mon fichier pilote ODBC comme ceci:
;
; odbcinst.ini
;
;
[FreeTDS]
Driver = /usr/local/lib/libtdsodbc.so
Puis j'ai configuré le serveur dans le fichier freetds.conf
comme ceci:
# Aries database server (SQL Server 2008)
[aries-db1]
host = xx.xx.xx.xx
port = 1433
tds version = 8.0
Et finalement j'ajouté la source de données ODBC dans le fichier odbc.ini
comme ceci:
[aries-db1]
Driver = FreeTDS
Description = ODBC Connection via FreeTDS
Trace = 1
Servername = aries-db1
Database = MY_DB
UID = user1
PWD = pass1
Je peux vérifier que mon serveur est en ligne et le port est ouvert (via telnet & yougetsignal.com vérification du port).
En tant que test, je l'ai fait:
tsql -S aries-db1 -U user1 -P pass1
et il semblait se connecter très bien. La transmission de valeurs non valides entraîne des erreurs attendues.
Donc finalement à ma question:
Comment puis-je prolonger ce à Ruby? Rien de ce que j'ai essayé jusqu'ici n'a fonctionné. J'ai essayé Sequel comme ceci:
require 'sequel'
Sequel.connect('aries-db1')['select * from foo'].all
Et je reçois une erreur comme ceci:
Sequel::DatabaseConnectionError: ODBC::Error: S1000 (0) [unixODBC][FreeTDS][SQL Server]Unable to connect to data source
Ce qui me dit qu'il est de trouver correctement ma configuration du pilote, mais pour une raison quelconque ne peut pas se connecter.
J'ai essayé aussi DBI comme ceci:
DBI.connect('DBI:ODBC:aries-db1')
Et je reçois une erreur semblable.
Des suggestions? Je me sens comme si je suis très proche, mais je ne suis pas sûr de ce qu'il faut essayer à côté de résoudre ce problème.
'je peux vérifier que mon serveur est en ligne et le port est ouvert (via telnet & yougetsignal.com port check). Désolé, je ne peux pas répondre à votre question. Cependant, vous devez savoir que l'exposition de SQL Server à Internet risque d'entraîner un problème de sécurité. Divers robots analysent SQL Server et essaient de se connecter/attaquer. –
Vous devez utiliser l'IRM? Tu ne peux pas utiliser JRuby et JDBC? – Luke
@will - Merci d'avoir signalé cela. Je suis très conscient de la gravité de ce problème, mais dans le système de production, je vais le verrouiller par adresse IP et changer le port. J'essaie simplement de valider que toutes ces pièces fonctionnent ensemble. –