“自适应服务器不可用或不存在”从 PHP 连接到 SQL Server 时出错

我正在尝试使用unixODBC和FreeTDS从我的Mac连接到SQL Server 2005 DB,正如我在这里概述的那样。但是,当我尝试使用相同的设置连接到其他数据库时,我得到:

Connection Failed:[FreeTDS][SQL Server]Unable to connect: Adaptive Server is unavailable or does not exist.

这是我的freetds.conf设置:

[my_db]
host = 12.34.56.789
port = 1433
tds version = 8.0

这是我的odbc.ini:

[my_dsn]
Driver = /opt/local/lib/libtdsodbc.so
Description = My Database
Trace = no
Servername = my_db
Database = MyDB

[ODBC Data Sources]
my_dsn = FreeTDS

我仍然能够连接到我在此计算机上设置的其他数据库(在上面链接的博客文章中进行了描述),因此我很确定Mac端没有错误。我已在服务器上验证我使用的是正确的 IP 地址和端口。关于可能是什么问题的任何想法,以及它是否在服务器端?


答案 1

1. 查看有关 SQL 服务器的信息

tsql -LH SERVER_IP_ADDRESS

locale is "C"
locale charset is "646"
ServerName TITAN
InstanceName MSSQLSERVER
IsClustered No
Version 8.00.194
tcp 1433
np \\TITAN\pipe\sql\query

2. 设置你的自由

tsql -C    
freetds.conf directory: /usr/local/etc

[TITAN]
host = SERVER_IP_ADDRESS
port = 1433
tds version = 7.2

3 尝试

tsql -S TITAN -U user -P password

 'dsn' => 'dblib:host=TITAN:1433;dbname=YOURDBNAME',

另请参见 http://www.freetds.org/userguide/confirminstall.htm(示例 3-5)。

如果您收到消息 20009,请记住您尚未连接到计算机。这是配置或网络问题,而不是协议故障。验证服务器是否已启动,是否具有 FreeTDS 正在使用的名称和 IP 地址,以及是否正在侦听配置的端口。


答案 2

经过无数个小时的挫折,我设法让所有的工作:

odbcinst.ini:

[FreeTDS]
Description = FreeTDS Driver v0.91
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
fileusage=1
dontdlclose=1
UsageCount=1

odbc.ini:

[test]
Driver = FreeTDS
Description = My Test Server
Trace = No
#TraceFile = /tmp/sql.log
ServerName = mssql
#Port = 1433
instance = SQLEXPRESS
Database = usedbname
TDS_Version = 4.2

FreeTDS.conf:

[mssql]
host = hostnameOrIP
instance = SQLEXPRESS
#Port = 1433
tds version = 4.2

第一个测试连接(mssqlfreetds.conf 中的节名):

tsql -S mssql -U username -P password

您必须看到一些设置,但没有错误,只有 1> 提示。使用退出退出。

然后让我们测试 DSN/FreeTDS(测试来自 odbc 的节名.ini;-v 表示详细):

isql -v test username password -v

您必须看到消息已连接!


推荐