【问题标题】:Ruby connecting to SQL ServerRuby 连接到 SQL Server
【发布时间】:2011-01-13 04:59:08
【问题描述】:

我在将 Ruby 连接到 Microsoft SQL Server 时遇到问题。我正在运行 Mac OS X,但目标环境是 Ubuntu Linux。

这是我尝试过的:

  • 安装unixODBC
  • 安装FreeTDS
    • 使用选项--with-unixodbc=/usr/local/etc--with-tdsver=8.0

然后我把这些文件放在/usr/local/etc:

  • odbc.ini
  • odbcinst.ini
  • freetds.conf

我在我的 ODBC 驱动程序文件中添加了对 odbcinst.ini 文件中 FreeTDS 驱动程序的引用,如下所示:

;
; odbcinst.ini
;
;
[FreeTDS]
Driver = /usr/local/lib/libtdsodbc.so

然后我在freetds.conf 文件中这样配置服务器:

# Aries database server (SQL Server 2008)
[aries-db1]
        host = xx.xx.xx.xx
        port = 1433
        tds version = 8.0

最后我在odbc.ini 文件中添加了 ODBC DSN,如下所示:

[aries-db1]
Driver      =   FreeTDS
Description =   ODBC Connection via FreeTDS
Trace       =   1
Servername  =   aries-db1
Database    =   MY_DB
UID         =   user1
PWD         =   pass1

我可以验证我的服务器是否在线并且端口是否打开(通过 telnet 和 yougetsignal.com 端口检查)。

作为测试,我这样做了:

tsql -S aries-db1 -U user1 -P pass1

而且它似乎连接得很好。传入无效值会导致预期错误。

所以最后我的问题:

如何将其扩展到 Ruby?到目前为止,我尝试过的任何方法都没有奏效。我试过这样的续集:

require 'sequel'
Sequel.connect('aries-db1')['select * from foo'].all

我收到这样的错误:

Sequel::DatabaseConnectionError: ODBC::Error: S1000 (0) [unixODBC][FreeTDS][SQL Server]Unable to connect to data source

这告诉我它正在正确找到我的驱动程序配置,但由于某种原因无法连接。

我也尝试过这样的 DBI:

DBI.connect('DBI:ODBC:aries-db1')

我遇到了类似的错误。

有什么建议吗?我觉得我已经很接近了,但不确定接下来要尝试什么来解决此问题。

【问题讨论】:

  • I can verify that my server is online and the port is open (via telnet & yougetsignal.com port check). 抱歉,我无法回答您的问题。但是您应该知道,将 SQL Server 暴露在 Internet 上可能会导致安全问题。各种机器人扫描 SQL Server 并尝试连接/攻击它。
  • 您必须使用 MRI 吗?不能用 JRuby 和 JDBC 吗?
  • @will - 感谢您指出这一点。我非常清楚这有多糟糕,但在生产系统中,我将通过 IP 地址将其锁定并更改端口。我只是想验证所有这些部分是否可以协同工作。
  • 我对 JDBC 或 JVM 的经验为零,但我会说这是可能,只是我不太可能会选择它。

标签: sql-server ruby odbc freetds unixodbc


【解决方案1】:

看看 https://github.com/rails-sqlserver/tiny_tds TinyTds - 使用 DB-Library 的现代、简单和快速的 Ruby 的 FreeTDS 库

它易于安装和使用

【讨论】:

  • 有趣的是,我在所有搜索中都没有找到这个。我会试一试,让你知道我发现了什么。
  • 这就像一个冠军!感谢您的建议,这会很好。
猜你喜欢
  • 2015-01-19
  • 2010-10-18
  • 2013-05-01
  • 1970-01-01
  • 2014-05-25
  • 2014-12-01
  • 2011-07-28
  • 2019-06-14
  • 1970-01-01
相关资源
最近更新 更多