2009-05-27 15 views
3

Je suis en train de se connecter au serveur de base de données SQL 2005 de la machine * NIX:Comment se connecter à partir de rubis MS Sql Server

je la configuration suivante: Linux 64 bits

ruby -v ruby 1.8.6 (2007-09-24 patchlevel 111) [x86_64-linux] important gems: dbd-odbc (0.2.4) dbi (0.4.1) active record sql server adapter - as plugin

ruby- odbc 0,9996 (installé sans aucune option.) 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 incapable de trouver le pilote ODBC approprié, mais je n'ai aucune idée pourquoi.

J'ai eu un problème avec /usr/lib/libtdsodbc.so qui est vide dans le paquet par défaut debian free-tds dev, mais j'ai résolu le problème en supprimant le paquet cassé et l'installation des sources.

Apprécierez n'importe quelle pensée!

Note: Je suis Albe de se connecter en utilisant les mêmes étapes sur Mac 10.5

+0

Tout d'abord, quelle est la version de Ruby que vous utilisez sur "mac 10.5"? Je pense que 1.8.6 pourrait être le problème. Aussi .. Quelle version d'Activerecord utilisez-vous? – Trevoke

Répondre

1

Cela ressemble beaucoup, et j'ai obtenu le même type de configuration pour travailler sur Ubuntu 8.04 (avec Ruby 1.8.6. Comme c'est sur Debian, ça devrait être le même.

Ces paquets doivent être installés: unixODBC freetds-dev unixodbc-dev libdbd-odbc-ruby tdsodbc

/etc/odbcinst.ini devrait avoir quelque chose comme ceci:

[FreeTDS] 
Description = FreeTDS unixODBC Driver 
Driver = /usr/lib/odbc/libtdsodbc.so 
Setup = /usr/lib/odbc/libtdsodbc.so 
UsageCount = 1 

et/etc/freetds/freetds.conf: (où XXX est le nom de base de données et NNN ... est l'adresse IP du serveur):

[XXX] 
    host = NNN.NNN.NNN.NNN 
    tds version = 8.0 
    client charset = UTF-8 
    text size = 262144 
    port = 1433 

alors de se connecter:

ActiveRecord::Base.sqlserver_connection({"mode"=>"ODBC", 
    "adapter"=>"sqlserver", 
    "dsn"=>"DRIVER=FreeTDS;SERVERNAME=XXX;DATABASE=XXX;uid=XXX;pwd=XXX" 
) 
+0

Une meilleure marche à suivre est ici: http://wiki.github.com/rails-sqlserver/2000-2005-adapter/platform-installation-ubuntu-2 –

+0

Salut, j'essaie d'utiliser votre exemple mais j'ai cette erreur ** S1000 (0) [unixODBC] [FreeTDS] [SQL Server] Impossible de se connecter à la source de données ** – Steven

Questions connexes