“Adaptive Server不可用或不存在”错误从PHP连接到SQL Server

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“Adaptive Server不可用或不存在”错误从PHP连接到SQL Server相关的知识,希望对你有一定的参考价值。

我正在尝试使用unixODBC和FreeTDS从我的Mac连接到SQL Server 2005数据库,因为我已经概述了here。但是,当我尝试使用相同的设置连接到不同的数据库时,我得到:

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.查看有关SQL Server的信息

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 \TITANpipesqlquery

2.设置你的freetds.conf

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地址,并正在侦听已配置的端口。

另一答案

听起来你的dsn或odbc数据源有问题。

尝试首先绕过dsn并使用以下连接:

TDSVER=8.0 tsql -S *serverIPAddress* -U *username* -P *password*

如果可以,你知道你的dsn或使用你的dsn的freetds的问题。此外,您的tds版本可能与您的服务器不兼容。您可能想尝试其他TDSVER设置(5.0,7.0,7.1)。

另一答案

经过无数个小时的挫折,我成功地完成了所有工作:

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

第一个测试连接(mssql是来自freetds.conf的部分名称):

tsql -S mssql -U username -P password

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

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

isql -v test username password -v

你必须看到消息已连接!

另一答案

我有同样的问题,我的问题是服务器上的防火墙没有从当前的IP地址打开。

另一答案

回应是因为当我遇到同样的问题时,这个答案首先出现在搜索中:

[08S01] [unixODBC] [FreeTDS] [SQL Server]无法连接:Adaptive Server不可用或不存在

必须在不设置端口的情况下正确配置MSSQL命名实例。 (documentation on the freetds config说设置实例或端口不是两个)

freetds.conf

[Name]
host = Server.com
instance = instance_name
#port = port is found automatically, don't define explicitly
tds version = 8.0
client charset = UTF-8

而在odbc.ini只是因为你可以设置Port,不要在使用命名实例时。

另一答案

我发现防火墙出现了问题。因此,请确保您的IP已列入白名单,并且防火墙不会阻止您的连接。您可以检查连接:

tsql -H somehost.com -p 1433

就我而言,输出是:

Error 20009 (severity 9):
  Unable to connect: Adaptive Server is unavailable or does not exist
  OS error 111, "Connection refused"
There was a problem connecting to the server
另一答案

尝试将服务器名称更改为“localhost”

pymssql.connect(server =“localhost”,user =“myusername”,password =“mypwd”,database =“temp”,port =“1433”)

另一答案

Bud,禁用selinux或将以下内容添加到RedHat / CentOS服务器:

setsebool -P httpd_can_network_connect_db 1
setsebool -P httpd_can_network_connect 1

总是最棒的!

以上是关于“Adaptive Server不可用或不存在”错误从PHP连接到SQL Server的主要内容,如果未能解决你的问题,请参考以下文章

PHP/PDO 错误:SQLSTATE[HY000] 无法连接:Adaptive Server 不可用或不存在(严重性 9)

JavaScript 如何正确的分析报错信息

JavaScript 如何正确的分析报错信息

嘿嘿!报错不断呀!快哉快哉,检测nginx配置文件时报错,整它!

mycat这个报错信息怎么解决

JVM-Sandbox常见报错