¿Alguna vez tuvo que conectarse a SQL Server con ActiveRecord? es posible? ¿Alguien puede proporcionar algunos puntos de partida?Conexión a SQL Server con ActiveRecord
Respuesta
Esto lo he utilizado:
A partir de aquí: http://github.com/rails-sqlserver/2000-2005-adapter/tree/master
instalación
En primer lugar, se necesita de Ruby y Ruby DBI ODBC. Que yo sepa, ADO DBD para DBI ya no es compatible. La siguiente instalación no es un recorrido completo sobre cómo obtener todas las piezas móviles requeridas como FreeTDS instalado y/o configurado. También asumirá las instalaciones de gemas tanto de las bibliotecas dependientes como del adaptador en sí.
Cabe señalar que esta versión del adaptador se desarrolló utilizando tanto la antigua versión 0.0.23 de DBI hasta la versión estable actual de 0.4.0. Debido a que las versiones posteriores de DBI cambiarán muchas cosas, SE RECOMIENDA ALTAMENTE que maximice su instalación a la versión 0.4.0 que muestran los ejemplos a continuación. Por el momento, no estamos soportando versiones de DBI superiores a 0.4.0. La buena noticia es que si usabas un DBI muy antiguo con ADO, técnicamente este adaptador funcionará para ti, pero ten en cuenta que tu camino se está haciendo viejo y es posible que no se admita por mucho tiempo.
$ 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
A partir de aquí: http://lambie.org/2008/02/28/connecting-to-an-mssql-database-from-ruby-on-ubuntu/
En primer lugar, actualizar su ~/.profile para incluir lo siguiente:
export ODBCINI=/etc/odbc.ini
export ODBCSYSINI=/etc
export FREETDSCONF=/etc/freetds/freetds.conf
vuelva a cargar el archivo .profile, cerrando la sesión y de nuevo.
En segundo lugar, en Ubuntu 7.10 Server, necesitaba instalar algunos paquetes.
[email protected]:~$ sudo aptitude install unixodbc unixodbc-dev freetds-dev sqsh tdsodbc
Con FreeTDS instalada i podría configurar de esta manera:
[email protected]:/etc/freetds$ cat freetds.conf
[ACUMENSERVER]
host = 192.168.0.10
port = 1433
tds version = 7.0
Lo importante aquí es ACUMENSERVER, que es el DSN que voy a usar cuando se conecta a la base de datos. El host y el puerto se explican por sí solos, y vale la pena señalar que tuve que usar 7.0 específicamente como la versión de tds.
Prueba FreeTDS no es demasiado difícil:
[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
El siguiente es necesaria para configurar 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
Entonces probé la conexión con 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, así que tenemos ODBC usando FreeTDS para conectarnos a un servidor MSSQL remoto. Todo lo que queda es agregar Ruby a la mezcla.
[email protected]:~$ sudo aptitude install libdbd-odbc-ruby
La última cosa a probar es que Ruby puede utilizar DBI y ODBC para golpear la base de datos real, y eso es fácil de probar:
[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
Y una prueba más completa (sólo con SQL SELECT, le importaría):
#!/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>
Desde aquí (para fijar la lib ODBC estar en el lugar equivocado): 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.
de cualquier manera funciona cuando se accede a mssql desde el símbolo
isql -v $dsn $user $passwd
Me pareció que para ser útil
http://www.unixodbc.org/doc/FreeTDS.html#Configuration
Y luego en el archivo database.yml:
development:
adapter: sqlserver
mode: odbc
dsn: dsn_name
username: my_username
password: my_password
Estos son los ste ps que he compilado para Centos 5.3. Me costó un montón de prueba y error hacer que esto funcione. Es de una instalación de Centos completamente limpia.
Instalar EPEL:
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
Instalar rubí, rubygems, freetds, unixODBC, herramientas de desarrollo:
yum install gcc
yum install freetds
yum install ruby-devel
yum install unixODBC-devel
yum install ruby rubygems
install rails:
gem install rails
Instalar gemas relacionadas DB:
gem install dbd-odbc
gem install rails-sqlserver-2000-2005-adapter -s http://gems.github.com
Descarga, construir e instalar 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
lista joya final:
# 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)
se pueden utilizar diversas herramientas como isql para probar la conexión ODBC. La publicación de Brian lo cubre con todo lujo de detalles, así que no repetiré. En los carriles se necesita un database.yml que se ve algo como esto:
development:
adapter: sqlserver
mode: odbc
dsn: dsnName
username: username
password: password
En Ubuntu, que utiliza FreeTDS y la gema activerecord-sqlserver-adaptador.
Puede instalar FreeTDS a través de apt:
sudo apt-get install freetds
y añadir a su Gemfile:
gem 'activerecord-sqlserver-adapter'
que tenía que cambiar el número de versión FreeTDS configurado en /etc/freetds/freetds.conf
a 8.0
con el fin de hacer las cosas trabajando correctamente
[global]
tds version = 8.0
- 1. Conexión a SQL Server con qt
- 2. Conexión a Microsoft SQL Server con Clojure
- 3. SQL Server RODBC Conexión
- 4. Conexión a SQL Server LocalDB utilizando JDBC
- 5. Conexión a SQL CE db con SQLConnection
- 6. PHP para conexión de SQL Server
- 7. No se pudo abrir una conexión con SQL Server
- 8. Conexión de Android con MS SQL SERVER 2008
- 9. Cuándo debo abrir y cerrar una conexión a SQL Server
- 10. SQL UNION con Rails ActiveRecord
- 11. ¿límite de conexión de conexión de SQL Server?
- 12. MS SQL Server y JDBC: cerrado conexión
- 13. SQL Server 2008 a SQL Server 2005
- 14. Mono a SQL Server con Windows autenticación
- 15. Conexión a MS SQL Server usando python en Linux con 'Credenciales de Windows'
- 16. Conectar a SQL Server a través de PDO usando el controlador de SQL Server
- 17. SQL Server: cliente nativo frente a ODBC?
- 18. Zend Framework 2 Microsoft SQL Server 2008 conexión DB
- 19. Obteniendo las propiedades de conexión actuales en SQL Server
- 20. Cambiando de usar SQL Server Express a SQL Server Compact
- 21. Restaurar SQL Server 2008 DB * a * SQL Server 2005
- 22. degradación de SQL Server 2008 a SQL Server 2005
- 23. SQL Server 2008 a SQL Server Compact Edition?
- 24. Conectar a SQL Server localdb JDBC
- 25. SQL Server 2008 compatibilidad con SQL Server 2005
- 26. SQL Server, convierta una instancia con nombre a instancia predeterminada?
- 27. Configuración de ELMAH con el registro de SQL Server con cadena de conexión cifrada
- 28. SQL Server Escape a Underscore
- 29. ¿Dónde se registran los intentos de conexión de SQL Server?
- 30. conectando a MS SQL Server local