Eth*_*han 3 ruby sql-server database-connection ruby-on-rails
我需要让我的Rails应用程序连接到MS SQL Server数据库并执行简单查询以进行查找.该应用程序的主要数据库是MySQL.它只需要在一边做这个SQL Server的事情.
最好的方法是什么?
我可以在Java中编写一个完全独立的应用程序,它连接到数据库并将一些XML数据转储到文件系统,以便我的Ruby应用程序可以接收.
或者我可以搞乱Ruby ODBC连接.我在Gemcutter上搜索了一下,发现了这些......
但这意味着从一个Rails应用程序连接到两个不同的DB.我甚至都不确定该怎么做.
有没有人有使用Ruby的SQL Server的经验?有关哪种方法最实用的想法?
更新 - 让它工作
谢谢您的帮助.基于答案和一些研究,我解决了这个问题.我打算在下面粘贴我的笔记.对不起,随意的语气.我只是复制了它们.
这些文档非常详细,而且写得很清楚.在关键的地方有一些粗糙的地方,花了我几个小时的故障排除.
默认情况下,它会安装到/usr/local/freetds/lib.
这给了你一堆实用工具和东西.他们可以帮助进行测试和故障排除.
例如,来自文档:"tsql实用程序作为FreeTDS的一部分提供,专门用于故障排除."
将此添加到/ etc/profile:
# 2010-10-19
# To support the FreeTDS library for connecting Ruby to SQL Server.
PATH=$PATH:/usr/local/freetds/bin
# Have FreeTDS to log some output.
#export TDSDUMP=/tmp/freetds.log
#export TDSDUMPCONFIG=/tmp/freetdb_config.log
export PATH
Run Code Online (Sandbox Code Playgroud)
需要为FreeTDS创建配置文件.文档列出了可以存储的几个地方.唯一适合我的是~/.freetds.conf...
[DATA_SERVER_NAME]
host = hostname
port = 1433
tds version = 8.0
Run Code Online (Sandbox Code Playgroud)
这是整个配置.因为[DATA_SERVER_NAME]你不能使用主机名,否则它将无法使用.使用一些直观的逻辑名称.当您使用tiny_tdsgem 在Ruby代码中连接它时,您将使用该名称.
尽管它在FreeTDS文档中说的是,但是不需要创建odbc.ini或odbcinst.ini文件.它没有它.
该tiny_tds宝石连接Ruby来freetds的一个SQL Server数据库.在tiny_tds文档中它说...
'...请确保使用libiconv支持编译FreeTDS,以便编码能够发挥最佳性能.在控制台中运行"tsql -C"并检查"iconv library:yes".
我能够做到这一点并且有效.
它应该像这样工作:
require 'tiny_tds'
client = TinyTds::Client.new(:username => '...username...', :password => '...password...', :dataserver => 'DATA_SERVER_NAME')
sql = '... whatever ...'
result = client.execute(sql)
client.close
Run Code Online (Sandbox Code Playgroud)
假设您通过安装activerecord-sqlserver-adaptergem 获得所有设置后,可以将ActiveRecord与SQL Server一起使用.我不需要那样,所以我没有安装它.
目前有许多开发正在进行连接到MS SQL的必要gems.
简短的摘要: