Comment faire pour se connecter à partir de ruby pour MS Sql Server
Je suis en train d'essayer de se connecter à sql server 2005 de la base de données à partir de *NIX machine:
J'ai la configuration suivante: Linux 64bit
ruby-v
ruby 1.8.6 (2007-09-24 version 111) [x86_64-linux]
les gemmes importantes:
dbd-odbc (0.2.4)
dbi (0.4.1)
active record sql server adapter - comme plugin
ruby-odbc 0.9996 (installé sans les options.)
unixODBC est installé
freeTDS est installé
cat /etc/odbcinst.ini
[FreeTDS]
Description = TDS driver (Sybase/MS SQL)
Driver = /usr/lib/libtdsodbc.so
Setup = /usr/lib/odbc/libtdsS.so
CPTimeout =
CPReuse =
FileUsage = 1
DSN:
DRIVER=FreeTDS;TDS_Version=8.0;SERVER=XXXX;DATABASE=XXX;Port=1433;uid=XXX;pwd=XXXX;"
ou
DRIVER=/usr/lib/libtdsodbc.so;TDS_Version=8.0;SERVER=XXXX;DATABASE=XXX;Port=1433;uid=XXX;pwd=XXXX;"
Je reçois l'erreur suivante:
>>ActiveRecord::Base.sqlserver_connection({"mode"=>"ODBC", "adapter"=>"sqlserver", "dsn"=>my_dns)
DBI::DatabaseError: IM002 (0) [unixODBC][Driver Manager]Data source name not found, and no default driver specified
from /usr/lib/ruby/1.8/DBD/ODBC/ODBC.rb:95:in `connect'
from /usr/lib/ruby/1.8/dbi.rb:424:in `connect'
from /usr/lib/ruby/1.8/dbi.rb:215:in `connect'
from /opt/ublip/rails/current/vendor/plugins/activerecord-sqlserver-adapter/lib/active_record/connection_adapters/sqlserver_adapter.rb:47:in `sqlserver_connection'
Il ressemble ODBC impossible de trouver le pilote ODBC approprié, mais j'ai aucune idée pourquoi.
J'ai eu un problème avec la commande /usr/lib/libtdsodbc.alors, qui est vide par défaut dans debian package gratuit-tds dev, mais je l'ai résolu avec la suppression de paquet cassé et installation à partir des sources.
Appréciera tout pensé!
Note:
Je suis albe à se connecter en utilisant les mêmes étapes sur mac 10.5
OriginalL'auteur | 2009-05-27
Vous devez vous connecter pour publier un commentaire.
Ce regarde de plus près, et j'ai obtenu le même type de configuration de travailler sur Ubuntu 8.04 (avec Ruby 1.8.6.) Puisque c'est sur Debian, il devrait être similaire.
Ces paquets doivent être installés: unixodbc unixodbc-dev freetds-dev libdbd-odbc-ruby tdsodbc
/etc/odbcinst.ini doit avoir quelque chose comme ceci:
Et /etc/freetds/freetds.conf: (où XXX est le nom de base de données et NNN... est l'adresse IP du serveur):
Puis de se connecter:
Salut, je suis en train d'utiliser votre exemple, mais je reçois ce message d'erreur **S1000 (0) [unixODBC][FreeTDS][SQL Server]Impossible de se connecter à la source de données **
OriginalL'auteur Nathan L Smith