Je vais avoir des problèmes de connexion à un SQL Server 2005 installer à partir de ce simple application Ruby:Connexion à MS SQL Server 2005 à partir de Mac en utilisant Ruby, ODBC et FreeTDS
#!/usr/bin/env ruby
require 'rubygems'
require 'sequel'
Sequel.odbc('dev04')['select top 1 * from users'].all
Les points de DSN dev04
à mon odbc.ini
entrée de fichier:
[dev04]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
Trace = 1
Servername = dev04
Database = Dev04
UID = uDev04
PWD = pwdDev04
FreeTDS
est installé dans odbcinst.ini et il pointe cette configuration dans freetds.conf
:
[dev04]
host = hm602.mycompany.com
port = 1433
tds version = 7.0
Cela fonctionne:
carlos$ tsql -S dev04 -U uDev04 -P pwdDev04
locale is "en_GB.UTF-8"
locale charset is "UTF-8"
1> exit
carlos$
Et le fait ceci:
carlos$ iodbctest "DSN=dev04;UID=uDev04;PWD=pwdDev04"
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0406.1211
Driver: 0.82 (libtdsodbc.so)
SQL>exit
Have a nice day.
carlos$
Quand je lance ce script Ruby, cependant, je reçois cette erreur:
carlos$ ruby mssql.rb
/Library/Ruby/Gems/1.8/gems/sequel-3.4.0/lib/sequel/adapters/odbc.rb:37:in `initialize': ODBC::Error 01000 (20002) [FreeTDS][SQL Server]Adaptive Server connection failed (Sequel::DatabaseConnectionError)
from /Library/Ruby/Gems/1.8/gems/sequel-3.4.0/lib/sequel/adapters/odbc.rb:37:in `connect'
from /Library/Ruby/Gems/1.8/gems/sequel-3.4.0/lib/sequel/adapters/odbc.rb:37:in `connect'
from /Library/Ruby/Gems/1.8/gems/sequel-3.4.0/lib/sequel/database.rb:92:in `initialize'
...
Je comprends la Une erreur «Échec de la connexion Adaptive Server» peut se produire en raison des différences de version du protocole TDS. J'ai vérifié les journaux et ils semblent tous utiliser la version correcte (7.0), donc je suis complètement perdu quant à la raison pour laquelle cela pourrait se produire.
Des pointeurs?
Salut Jeremy! Merci d'avoir pris le temps de répondre à cette question. J'ai essayé la connexion avec la dernière ActiveRecord, et apparemment cela fonctionne: ActiveRecord :: Base.establish_connection ({ : adaptateur => 'SQLServer', : mode => 'odbc', : dsn => 'Dev04', : nom d'utilisateur => 'uDev04', : password => 'pwdDev04' }) J'utilise activerecord avec rails 2.3.4 SQLServer-2000-2005 adaptateur 2.2.19, AFAICT. Malheureusement, AR ne m'aidera pas beaucoup (c'est un schéma hérité mal évolué), et Sequel ferait parfaitement le travail. Je tiens à aider à résoudre ce problème, mais je ne sais pas par où commencer. Des idées? –
Vous pouvez essayer: Sequel.odbc ('Dev04',: user => 'uDev04',: password => 'pwdDev04') Je ne suis pas sûr que cela fonctionne, mais il vaut le coup. Si cela ne fonctionne pas, je peux jeter un oeil au code de l'adaptateur AR SQLServer pour voir comment il utilise différemment Ruby/ODBC. Pour être sûr, utilisez-vous la version 2.2.21 d'activeecord-sqlserver-adapter? –
J'utilise activerecord-sqlserver-adaptateur 2.2.19 et rails-sqlserver-2000-2005-adaptateur 2.2.19 (pour autant que je sache, ce sont les dernières versions à ce jour), avec Rails 2.3.4 . –