Avez-vous déjà dû vous connecter à SQL Server avec ActiveRecord? Est-ce possible? Quelqu'un peut-il fournir quelques points de départ?Connexion à SQL Server avec ActiveRecord
Répondre
Ce que je:
D'ici: http://github.com/rails-sqlserver/2000-2005-adapter/tree/master
Installation
D'abord, vous aurez besoin Ruby et Ruby DBI ODBC. A ma connaissance le DBO ADO pour DBI n'est plus supporté. L'installation ci-dessous n'est pas une marche complète sur la façon d'obtenir toutes les pièces mobiles nécessaires comme FreeTDS installé et/ou configuré. Il assumera également les installations de gem des bibliothèques dépendantes et de l'adaptateur lui-même.
Il convient de noter que cette version de l'adaptateur a été développée en utilisant à la fois l'ancienne version 0.0.23 de DBI jusqu'à la version stable actuelle de 0.4.0. Parce que les versions ultérieures de DBI vont changer beaucoup de choses, IL EST FORTEMENT RECOMMANDÉ que vous installiez au maximum la version 0.4.0 que les exemples ci-dessous montrent. Pour le moment, nous ne supportons pas les versions de DBI supérieures à 0.4.0. Les bonnes nouvelles sont que si vous utilisiez un très vieux DBI avec ADO, techniquement cet adaptateur fonctionnera toujours pour vous, mais soyez averti que votre chemin devient vieux et peut ne pas être soutenu longtemps.
$ gem install dbi --version 0.4.0
$ gem install dbd-odbc --version 0.2.4
$ gem install rails-sqlserver-2000-2005-adapter -s http://gems.github.com
D'ici: http://lambie.org/2008/02/28/connecting-to-an-mssql-database-from-ruby-on-ubuntu/
Tout d'abord, mettre à jour votre ~/.profile inclure les éléments suivants:
export ODBCINI=/etc/odbc.ini
export ODBCSYSINI=/etc
export FREETDSCONF=/etc/freetds/freetds.conf
Puis recharger votre .profile, en vous déconnectant et à nouveau.
Deuxièmement, sur Ubuntu 7.10 Server, j'avais besoin d'installer des paquets.
[email protected]:~$ sudo aptitude install unixodbc unixodbc-dev freetds-dev sqsh tdsodbc
Avec FreeTDS INSTALLÉ je pouvais le configurer comme ceci:
[email protected]:/etc/freetds$ cat freetds.conf
[ACUMENSERVER]
host = 192.168.0.10
port = 1433
tds version = 7.0
L'important est ici ACUMENSERVER, qui est la source de données que je vais utiliser lors de la connexion à la base de données. L'hôte et le port s'expliquent d'eux-mêmes, et il vaut la peine de noter que j'ai dû utiliser spécifiquement la version 7.0 en tant que version tds.
Test FreeTDS est pas trop difficile:
[email protected]:~$ sqsh -S ACUMENSERVER -U username -P password
sqsh: Symbol `_XmStrings' has different size in shared object, consider re-linking
sqsh-2.1 Copyright (C) 1995-2001 Scott C. Gray
This is free software with ABSOLUTELY NO WARRANTY
For more information type '\warranty'
1> use acumen
2> go
1> select top 1 firstname, lastname from tblClients
2> go
[record returned]
(1 row affected)
1> quit
Ensuite il est nécessaire de configurer ODBC:
[email protected]:/etc$ cat odbcinst.ini
[FreeTDS]
Description = TDS driver (Sybase/MS SQL)
Driver = /usr/lib/odbc/libtdsodbc.so
Setup = /usr/lib/odbc/libtdsS.so
CPTimeout =
CPReuse =
FileUsage = 1
[email protected]:/etc$ cat odbc.ini
[ACUMENSERVER]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
Trace = No
Servername = ACUMENSERVER
Database = ACUMEN
J'ai ensuite testé la connexion avec isql:
[email protected]:~$ isql -v ACUMENSERVER username password
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> use ACUMEN
[][unixODBC][FreeTDS][SQL Server]Changed database context to 'Acumen'.
[ISQL]INFO: SQLExecute returned SQL_SUCCESS_WITH_INFO
SQLRowCount returns -1
SQL> select top 1 firstname from tblClients;
[record returned]
SQLRowCount returns 1
1 rows fetched
SQL> quit
OK, nous avons donc ODBC en utilisant FreeTDS pour se connecter à un serveur MSSQL distant. Tout ce qui reste est d'ajouter Ruby dans le mélange.
[email protected]:~$ sudo aptitude install libdbd-odbc-ruby
La dernière chose à tester est que Ruby peut utiliser DBI et ODBC pour frapper la base de données réelle, et qui est facile à tester:
[email protected]:~$ irb
irb(main):001:0> require "dbi"
=> true
irb(main):002:0> dbh = DBI.connect('dbi:ODBC:ACUMENSERVER', 'username', 'password')
=> #<DBI::DatabaseHandle:0xb7ac57f8 @handle=#<DBI::DBD::ODBC::Database:0xb7ac5744
@handle=#<odbc::database:0xb7ac576c>, @attr={}>, @trace_output=#</odbc::database:0xb7ac576c><io:0xb7cbff54>,
@trace_mode=2>
irb(main):003:0> quit
Et un test plus complet (uniquement avec SQL SELECT, vous l'esprit):
#!/usr/bin/env ruby
require 'dbi'
db = DBI.connect('dbi:ODBC:ACUMENSERVER', 'username', 'password')
select = db.prepare('SELECT TOP 10 firstname FROM tblClients')
select.execute
while rec = select.fetch do
puts rec.to_s
end
db.disconnect
</io:0xb7cbff54>
A partir de là (pour fixer le odbc lib étant au mauvais endroit): http://ubuntuforums.org/showthread.php?t=433435&page=2
libtdsodbc.so
with freeTDS (freetds-dev, tdsodbc), you can either edit the path in the odbcinst.ini file for the [FreeTDS] driver section OR cp the /usr/lib/odbc/libtdsodbc.so into /usr/lib/libtdsodbc.so.
fonctionne de toute façon lors de l'accès MSSQL à l'invite
isql -v $dsn $user $passwd
i trouvé cela utile
http://www.unixodbc.org/doc/FreeTDS.html#Configuration
Et puis dans le fichier database.yml:
development:
adapter: sqlserver
mode: odbc
dsn: dsn_name
username: my_username
password: my_password
Ce sont les ps j'ai compilé pour Centos 5.3. Il m'a fallu beaucoup d'essais et d'erreurs pour que cela fonctionne. C'est à partir d'une installation Centos complètement propre.
Installer EPEL:
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
Installation rubis, rubygems, freetds, unixODBC, outils de développement:
yum install gcc
yum install freetds
yum install ruby-devel
yum install unixODBC-devel
yum install ruby rubygems
Installation des rails:
gem install rails
Installer DB gemmes liées:
gem install dbd-odbc
gem install rails-sqlserver-2000-2005-adapter -s http://gems.github.com
Téléchargez, construire et installer Ruby-odbc:
wget http://www.ch-werner.de/rubyodbc/ruby-odbc-0.9997.tar.gz
tar zxvf ruby-odbc-0.9997.tar.gz
cd ruby-odbc-0.9997
ruby extconf.rb
make
make install
gem list finale:
# gem list
*** LOCAL GEMS ***
actionmailer (2.3.2)
actionpack (2.3.2)
activerecord (2.3.2)
activeresource (2.3.2)
activesupport (2.3.2)
dbd-odbc (0.2.4)
dbi (0.4.1)
deprecated (2.0.1)
rails (2.3.2)
rails-sqlserver-2000-2005-adapter (2.2.17)
rake (0.8.7)
Vous pouvez utiliser divers outils comme isql pour tester votre connexion ODBC. Le post de Brian couvre cela dans les moindres détails, donc je ne le répéterai pas. Dans des rails, vous avez besoin d'une database.yml qui ressemble à ceci:
development:
adapter: sqlserver
mode: odbc
dsn: dsnName
username: username
password: password
Sur Ubuntu, j'utilise FreeTDS et la pierre précieuse activerecord-SQLServer adaptateur.
Vous pouvez installer FreeTDS par apt:
sudo apt-get install freetds
Et ajoutez ceci à votre Gemfile:
gem 'activerecord-sqlserver-adapter'
je devais changer le FreeTDS configuré le numéro de version dans /etc/freetds/freetds.conf
à 8.0
afin de faire avancer les choses fonctionne correctement.
[global]
tds version = 8.0
- 1. Connexion à SQL Server 2008 avec PDO
- 2. Connexion à SQL Server avec CL-SQL via unixODBC/FreeTDS
- 3. Ruby Connexion à SQL Server 2005
- 4. PHP PDO Connexion à SQL Server avec sécurité intégrée?
- 5. Connexion à SQL Server Analysis avec un utilisateur Windows
- 6. connexion SQL Server 2005 à partir d'Oracle
- 7. Problèmes de connexion SQL Server
- 8. Connexion de Reporting Services 2005SP2 à SQL Server 2008
- 9. Journal de connexion Sql Server 2005
- 10. Autorisations de connexion distantes SQL Server 2005
- 11. Problème de chaîne de connexion SQL Server?
- 12. Connexion SQL Server et Vista 64 bits?
- 13. Vérification de l'existence d'une connexion SQL Server
- 14. Pourquoi la connexion de Sql Server TimesOut
- 15. Problème de connexion à l'instance nommée SQL Server 2005
- 16. Comment puis-je accélérer ma connexion à MS SQL Server?
- 17. Impossible d'ajouter un Sql Server Connexion
- 18. SQL Server 2005 Authentification SQL Chaîne de connexion
- 19. Authentification SQL Server dans SQL Server 2008
- 20. PHP avec SQL Server 2005+
- 21. Sql serveur 2000 connexion à distance
- 22. Suite à des enregistrements avec ActiveRecord?
- 23. Connexion à SQL Server pour les erreurs de connexion au site SharePoint SSO
- 24. application Rôle se connecter à SQL Server avec « Échec de connexion » erreur
- 25. Connexion à une base de données Oracle avec SQL Server 2000 Reporting Services?
- 26. Quel est le problème avec cette chaîne de connexion ADODB à SQL Server 2005
- 27. Connexion à Team Foundation Server (TFS) avec authentification proxy
- 28. Connexion SQL avec correspondance imparfaite
- 29. SQL Server à Postgres
- 30. Cascading avec Castle ActiveRecord HasAndBelongsToMany's