我正在尝试将 Redhat Linux 连接到 Microsoft SQL Server 2008。我已经在 Windows(我的测试机器)上设置它时遇到了问题,但现在我需要将它部署在将投入生产的 Linux 机器上。
所以我已经安装了 unixODBC 和 FreeTDS(付出了很多努力,甚至不确定它是否正确安装:S),结果是我在 /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 中找出端口号,因为它在 SQL Server 2008 中设置为动态。
我的
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
和我的
odbc.ini
文件如下所示:[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
当我尝试使用 isql 时,做
isql -v sqlServer test test
,吐出以下错误:[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
任何想法我可能做错了什么?
最佳答案
如果您无法使用 tsql 连接,则说明您的 SQL 服务器或在 freetds.conf
中存在连接问题。 .
首先使用 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 服务器之间存在连接问题。
如果确实有效,则将您的端口设置为匹配 tcp 以上在
freetds.conf
.[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 错误消息的好信息:http://freetds.schemamania.org/userguide/confirminstall.htm
关于ruby-on-rails-3 - 将 Redhat 连接到 SQL Server 2008 for Ruby on Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7556794/