Ruby on rails 3 将Redhat连接到SQL Server 2008 for Ruby on Rails
我正在尝试将Redhat Linux连接到Microsoft SQL Server 2008。我在windows(我的测试机器)上设置它时遇到了麻烦,但现在我需要将它部署到Linux机器上,在那里它将投入生产 因此,我安装了unixODBC和FreeTDS(花了很大的努力,甚至不确定是否正确安装了:S),结果是我在Ruby on rails 3 将Redhat连接到SQL Server 2008 for Ruby on Rails,ruby-on-rails-3,sql-server-2008,redhat,freetds,unixodbc,Ruby On Rails 3,Sql Server 2008,Redhat,Freetds,Unixodbc,我正在尝试将Redhat Linux连接到Microsoft SQL Server 2008。我在windows(我的测试机器)上设置它时遇到了麻烦,但现在我需要将它部署到Linux机器上,在那里它将投入生产 因此,我安装了unixODBC和FreeTDS(花了很大的努力,甚至不确定是否正确安装了:S),结果是我在/usr/local/etc中有3个文件: odbc.ini odbcinst.ini freetds.conf 然后我编辑了freetds.conf文件,我添加了以下内容: [sq
/usr/local/etc
中有3个文件:
odbc.ini
odbcinst.ini
freetds.conf
然后我编辑了freetds.conf
文件,我添加了以下内容:
[sqlServer]
host = servername
port = 4113
instance = sqlServer
tds version = 8.0
client charset = UTF-8
我必须从我的DBA中找到端口号,因为在SQLServer2008中它被设置为动态
我的odbcinst.ini
文件如下所示:
[FreeTDS]
Description = TDS driver (Sybase/MS SQL)
Driver = /usr/local/lib/libtdsodbc.so
Setup = /usr/local/lib/libtdsS.so
CPTimeout =
CPReuse =
FileUsage = 1
[sqlServer]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
Trace = 1
Servername = sqlServer
Database = RubyApp
我的odbc.ini
文件如下所示:
[FreeTDS]
Description = TDS driver (Sybase/MS SQL)
Driver = /usr/local/lib/libtdsodbc.so
Setup = /usr/local/lib/libtdsS.so
CPTimeout =
CPReuse =
FileUsage = 1
[sqlServer]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
Trace = 1
Servername = sqlServer
Database = RubyApp
所以现在我尝试通过使用连接来查看是否存在任何连接
tsql-S sqlServer-U test-p test
,
但是,这只会给我以下错误:
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Error 20013 (severity 2):
Unknown host machine name.
There was a problem connecting to the server
[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[01000][unixODBC][FreeTDS][SQL Server]Unknown host machine name.
[ISQL]ERROR: Could not SQLConnect
当我尝试使用isql时,在执行isql-vsqlserver测试时,出现了以下错误:
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Error 20013 (severity 2):
Unknown host machine name.
There was a problem connecting to the server
[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[01000][unixODBC][FreeTDS][SQL Server]Unknown host machine name.
[ISQL]ERROR: Could not SQLConnect
知道我做错了什么吗?您不需要freetds.conf文件中的SQL Server主机名或IP地址吗--
如果无法与tsql连接,则SQL server或freetds.conf
中存在连接问题
[TDS]
host = 127.0.0.1
port = 1434
tds version = 7.0
首先使用tsql-LH[SQL server IP]
# tsql -LH 127.0.0.1
ServerName HOME
InstanceName INSTANCE1
IsClustered No
Version 10.50.2500.0
tcp 1434
如果这不起作用,则表明服务器与SQL server之间存在连接问题
如果确实有效,则在freetds.conf
中将端口设置为与上面的tcp匹配
[TDS]
host = 127.0.0.1
port = 1434
tds version = 7.0
实例在您的odbc.ini中设置
[MSSQLExample]
Description = Example server
Driver = FreeTDS
Trace = No
Server = 127.0.0.1\INSTANCE1
Database = MyDatabase
port = 1434
如果所有其他方法都失败了,请尝试使用osql
获取关于哪个部分不起作用的反馈
# osql -S MSSQLExample -U USERNAME -P PASSWORD
关于tsql错误消息的一些好信息:是的,我确实需要它,但为了安全起见,我写了servername
而不是真正的servername这个:Server=127.0.0.1\INSTANCE1保存了我的bacon!