php - SQLSTATE[01002] Adaptive Server 连接失败(严重性 9)

标签 php sql-server azure ubuntu pdo

我有以下脚本来连接到我的 Microsoft Azure 服务器。

<?php

try {
    $hostname = "secrets.database.windows.net";
    $dbname = "secrets";
    $username = "secrets";
    $pw = "secrets";
    $dbh = new PDO ("dblib:host=$hostname;dbname=$dbname","$username","$pw");
} catch (PDOException $e) {
    echo "Failed to get DB handle: " . $e->getMessage() . "\n";
    exit;
}

echo "Passed!";

上面的脚本在我的旧服务器上传递,但在从新服务器执行时给出以下错误消息。

SQLSTATE[01002] Adaptive Server connection failed (severity 9)

我的新服务器 PHP 设置如下:

sudo apt-get install -y php5.6-fpm php5.6-ldap php5.6-curl php5.6-cli   php5.6-mcrypt php5.6-intl php5.6-json php5.6-pdo-dblib php5.6-mysqlnd php5.6-memcached php5.6-mbstring php5.6-imap php5.6-xml php5.6-sybase

到目前为止我的支票:

1) 两者具有相同的面向公众的 IP 地址。

2) 两者都有相同的 PHP PDO/ODBC 设置。

$ php -i | grep PDO
DO
PDO support => enabled
PDO drivers => dblib, mysql, odbc
PDO Driver for FreeTDS/Sybase DB-lib => enabled
PDO Driver for MySQL => enabled
PDO_ODBC
PDO Driver for ODBC (unixODBC) => enabled

3) 我可以使用 telnet 从两台服务器 ping 我的服务器:

telnet secrets.database.windows.net 1433

如有任何建议,我们将不胜感激。

最佳答案

经过进一步的谷歌搜索,我发现了这个答案。

Connect PHP to MSSQL via PDO ODBC

结果我只需要更新我的/etc/freetds/freetds.conf

我的改变:

未注释的 TDS 协议(protocol)版本并已更新。

tds version = 8.0

在下面的示例中添加了 mssql。

[mssql]
host =
Port = 1433
tds version = 8.0

关于php - SQLSTATE[01002] Adaptive Server 连接失败(严重性 9),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37205752/

相关文章:

azure - 容器的 Web 应用程序 - Http 503

php - 在 mySql LEFT JOIN 语句中使用多个 ON 条件不起作用

php - PHP 中的 while 循环与 mysql_fetch_array()

javascript - 在成功的 ajax 上,使用预选的选项值从另一个表中创建一个下拉选择

sql-server - TSQL 定义临时表(或表变量)而不定义架构?

azure - 如何在单个数据流中使用多个缓存接收器并在管道中使用两个接收器的输出?

PHP->Python JSON 问题

c# - Entity Framework 从存储过程返回错误的值

sql - SQL Server 中基于条件行分组的列值相乘

Azure 容器实例由于拉取镜像时出现问题而失败