gpt4 book ai didi

sql-server - 使用 Ruby、ODBC 和 FreeTDS 从 Mac 连接到 MS SQL Server 2005

转载 作者:搜寻专家 更新时间:2023-10-30 23:24:36 24 4
gpt4 key购买 nike

我在从这个非常简单的 Ruby 应用程序连接到 SQL Server 2005 安装时遇到问题:

#!/usr/bin/env ruby
require 'rubygems'
require 'sequel'

Sequel.odbc('dev04')['select top 1 * from users'].all

dev04 DSN 指向我的 odbc.ini 文件条目:

[dev04]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
Trace = 1
Servername = dev04
Database = Dev04
UID = uDev04
PWD = pwdDev04

FreeTDS 安装在 odbcinst.ini 中,它指向 freetds.conf 中的这个配置:

[dev04]
host = hm602.mycompany.com
port = 1433
tds version = 7.0

这个有效:

carlos$ tsql -S dev04 -U uDev04 -P pwdDev04
locale is "en_GB.UTF-8"
locale charset is "UTF-8"
1> exit
carlos$

还有这个:

carlos$ iodbctest "DSN=dev04;UID=uDev04;PWD=pwdDev04"
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0406.1211
Driver: 0.82 (libtdsodbc.so)

SQL>exit

Have a nice day.
carlos$

但是,当我运行该 Ruby 脚本时,出现了这个错误:

carlos$ ruby mssql.rb 
/Library/Ruby/Gems/1.8/gems/sequel-3.4.0/lib/sequel/adapters/odbc.rb:37:in `initialize': ODBC::Error 01000 (20002) [FreeTDS][SQL Server]Adaptive Server connection failed (Sequel::DatabaseConnectionError)
from /Library/Ruby/Gems/1.8/gems/sequel-3.4.0/lib/sequel/adapters/odbc.rb:37:in `connect'
from /Library/Ruby/Gems/1.8/gems/sequel-3.4.0/lib/sequel/adapters/odbc.rb:37:in `connect'
from /Library/Ruby/Gems/1.8/gems/sequel-3.4.0/lib/sequel/database.rb:92:in `initialize'
...

我了解“Adaptive Server 连接失败”错误可能是由于 TDS 协议(protocol)版本差异引起的。我检查了日志,它们似乎都使用了正确的版本 (7.0),所以我完全不知道为什么会发生这种情况。

有什么建议吗?

最佳答案

我是 Sequel 的维护者。不幸的是,我没有任何使用 Sequel 使用 FreeTDS 连接到 MSSQL 的个人经验。不过我知道其他人已经成功地使用了它。

您的错误消息表明底层 Ruby/ODBC 库中存在问题,而不是 Sequel 本身。如果您可以直接使用 Ruby/ODBC 建立连接,那么使用 Sequel 应该不难。

抱歉,我不能提供更多帮助。

此外,虽然它与您当前的问题无关,但您应该对 Sequel.odbc 调用使用 :db_type=>'mssql' 选项。

关于sql-server - 使用 Ruby、ODBC 和 FreeTDS 从 Mac 连接到 MS SQL Server 2005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1401242/

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