gpt4 book ai didi

ruby-on-rails - 从 OS X 上的 Ruby 连接到 SQL Server 的最佳方式是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 07:51:14 26 4
gpt4 key购买 nike

我需要让我的 Rails 应用程序连接到 MS SQL Server 数据库并执行一个简单的查询来进行查找。该应用程序的主要数据库是 MySQL。它只需要在旁边做这个 SQL Server 事情。

最好的方法是什么?

我可以用 Java 编写一个完全独立的应用程序,它连接到数据库并将一些 XML 数据转储到文件系统以供我的 Ruby 应用程序获取。

或者我可以搞乱 Ruby ODBC 连接。我在 Gemcutter 上搜索了一下,发现了这些……

  • dbd-odbc (0.2.5) 11141 次下载
  • ruby-odbc (0.99992) 6390 次下载
  • activerecord-odbc-adapter (2.0) 2333 次下载
  • odbc-rails (1.5) 2167 次下载

不过,这意味着从一个 Rails 应用程序连接到两个不同的数据库。我什至不确定该怎么做。

有没有人有在 Ruby 中使用 SQL Server 的经验?对哪种方法最实用有什么想法吗?


更新——让它工作

感谢您的帮助。根据答案和一些研究,我得出了结论。我要把我的笔记贴在下面。抱歉语气随意。我只是将它们复制过来。

在 OS X 上使用 Ruby 连接到 SQL Server 的步骤

下载、配置、构建 FreeTDS 库

大部分文档都非常详细且写得很清楚。关键地方有一些粗糙的地方,我花了几个小时进行故障排除。

默认情况下,它安装到 /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

FreeTDS 配置文件

需要为 FreeTDS 创建配置文件。文档列出了几个可以存储的地方。唯一对我有用的是 ~/.freetds.conf...

[DATA_SERVER_NAME]
host = hostname
port = 1433
tds version = 8.0

这就是整个配置。对于 [DATA_SERVER_NAME],您不能使用主机名,否则它将不起作用。使用一些直观的逻辑名称。当您使用 tiny_tds gem 在 Ruby 代码中连接它时,您将使用该名称。

不需要设置ODBC

尽管 FreeTDS 文档中有说明,但无需创建 odbc.ini 或 odbcinst.ini 文件。没有它也能工作。

已安装 tiny_tds gem

tiny_tds gem 将 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

事件记录

据推测,在通过安装 activerecord-sqlserver-adapter gem 完成所有设置后,您可以将 ActiveRecord 与 SQL Server 一起使用。我不需要它,所以我没有安装它。

最佳答案

目前有很多开发工作正在进行,需要连接到 MS SQL。

简短摘要:

  • 您不再需要 dbi 或 dbd。 (c0r0ner 发布的指南太旧了)
  • 您只需要 freetds、ruby-odbc 和 activerecord-sqlserver-adapter
    (按照 wuputah 发布的 Xavier Shay 的指南进行操作)
  • 留意即将取代 ruby​​-odbc 的 tiny_tds
    使配置更简单,访问数据库更快捷
    ( http://github.com/rails-sqlserver/tiny_tds )

关于ruby-on-rails - 从 OS X 上的 Ruby 连接到 SQL Server 的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3977392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com