5

我正在尝试将 Redhat Linux 连接到 Microsoft SQL Server 2008。我已经在 Windows(我的测试机器)上设置它时遇到了麻烦,但现在我需要将它部署在将用于生产的 Linux 机器上。

所以我安装了 unixODBC 和 FreeTDS(付出了很多努力,甚至不确定它是否安装正确:S),结果是我有 3 个文件/usr/local/etc

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,doingisql -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

有什么想法我可能做错了吗?

4

2 回答 2

1

如果您无法与 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 服务器之间存在连接问题。

如果它确实有效,则将您的端口设置为与上面的tcpfreetds.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

于 2013-01-08T20:53:13.870 回答
0

您不需要 freetds.conf 文件中的 SQL Server 主机名或 IP 地址吗?

[sqlServer]
host = 192.168.0.99
:
于 2011-09-27T11:35:29.360 回答