按照Rails wiki上的说明进行操作,并成功连接到带有TSQL的SQL Server 2000 - 无论是DSN-less还是DNS连接。我正在运行Mac OS X 10.6.3。
已安装ruby-odbc,dbi(0.4.0),dbd-odbc(2.4.5),activerecord-sqlserver-adapter(2.3.5)。
在我的database.yml(Rails 2.3.6)中:
development:
adapter: sqlserver
mode: ODBC
dsn: 'DRIVER=/usr/local/lib/libtdsodbc.so;TDS_Version=8.0;SERVER=mssql01.discountasp.net;DATABASE=DB_164368_dmusd;Port=1433;uid=DB_164368_dmusd_user;pwd=Schools77;'
这会产生以下错误: ODBC ::错误:S1090(0)[unixODBC] [驱动程序管理器]无效的字符串或缓冲区长度
当我尝试使用DSN连接时,出现以下错误: ODBC ::错误:IM002(0)[unixODBC] [驱动程序管理器]未找到数据源名称,并且未指定默认驱动程序
我事实证实安装了FreeTDS驱动程序(libtdsodbc.so)并且路径正确。
有人能发现我的方式错误吗?提前谢谢。
答案 0 :(得分:1)
我会将配置拆分为:
freetds.conf
[somesqlserver]
host = HOST_ADDRESS
port = 1433
tds version = 8.0 # for SQL2000
和
odbc.ini
[server_connection]
Driver = /usr/local/lib/libtdsodbc.so
Server = ip_address_of_server
Database = database_name
client charset = UTF-8 #needed only on osx
在database.yml
中development:
adapter: sqlserver
mode: odbc
dsn: server_connection
username: your_username
password: your_password
Very good article for reference on osx but easily adaptable to unix
答案 1 :(得分:1)
按照本教程将rails应用程序连接到MS SQL Server
在Linux Box上从Rails连接到MicrosoftSQLServer: http://wiki.rubyonrails.org/database-support/ms-sql
答案 2 :(得分:0)
我强烈建议您在Mac OS X上忘记UnixODBC。而是将iODBC组件更新为the latest version。
iODBC-- Apple选择与Mac OS X一起提供的开源ODBC驱动程序管理器 - 来自与开源ODBC Adapter for Ruby on Rails - OpenLink Software相同的来源。
使用商业ODBC驱动程序(例如that from OpenLink)测试(如果不部署)也可能值得花时间。这有助于缩小尝试使用“免费”驱动程序时遇到的错误来源。 (总是有成本 - 唯一的问题是你是花钱还是花时间。)
ObDisclaimer:我为OpenLink Software工作,但不会直接从任何选择使用我们产品的人那里获益。