You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP无法连接SQL Server求助(PHP8.1+SQL Server2019)

问题:PHP 8.1 连接 SQL Server 2019 出现 IM006 错误

环境配置

  • PHP 8.1
  • SQL Server 2019(也曾尝试SQL Server 2022)
  • 应用在其他同配置环境运行正常,当前环境持续报错

连接代码

$connectionInfo = array("Database" => 'database_name', "UID" => 'sa', "PWD" => 'password');
$conn = sqlsrv_connect(DB_server, $connectionInfo);
if(!$conn) {
    echo "Could not connect";
    echo "<pre>";
    die(print_r(sqlsrv_errors(), true));
}

注:原代码中echo ""<pre>;存在语法错误,已修正为echo "<pre>";

错误信息

Array
(
    [0] => Array
        (
            [0] => IM006
            [SQLSTATE] => IM006
            [1] => 0
            [code] => 0
            [2] => [Microsoft][ODBC Driver Manager] Drivers's SQLSetConnectAttr failed
            [message] => [microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed
        )
    [1] => Array
        (
            [0] => 01000
            [SQLSTATE] => 01000
            [1] => 5701
            [code] => 5701
            [2] => [Microsoft][ODBC Driver 17 for SQL Server][Sql Server]Changed database context to 'database_name'.
            [message] => [Microsoft][ODBC Driver 17 for SQL Server][Sql Server]Changed database context to 'database_name'.
        )
    [2] => Array
        (
            [0] => 01000
            [SQLSTATE] => 01000
            [1] => 5703
            [code] => 5703
            [2] => [Microsoft][ODBC Driver 17 for SQL Server][Sql Server]Changed language setting to us_english.
            [message] => [Microsoft][ODBC Driver 17 for SQL Server][Sql Server]Changed language setting to us_english.
        )
)

已尝试排查步骤

  • 更换SQL Server版本(2019/2022)
  • 验证sa账号凭据正确性
  • 安装不同版本的ODBC驱动
  • 检查php.ini中php_sqlsrv.dll和php_pdo_sqlsrv.dll的路径配置

解决方案建议

1. 确认ODBC驱动与PHP位数匹配

执行php -v查看PHP运行位数(32/64位),卸载不匹配的ODBC驱动,安装对应位数的版本(推荐ODBC Driver 18 for SQL Server)。

2. 显式指定驱动版本

在连接参数中添加Driver字段,强制指定使用的ODBC驱动:

$connectionInfo = array(
    "Database" => 'database_name',
    "UID" => 'sa',
    "PWD" => 'password',
    "Driver" => "{ODBC Driver 17 for SQL Server}" // 替换为实际安装的驱动版本
);

3. 启用SQL Server TCP/IP协议

打开SQL Server配置管理器,展开「SQL Server网络配置」,选中对应实例的协议,确保TCP/IP已启用,随后重启SQL Server服务。

4. 验证PHP扩展加载状态

执行php -m确认sqlsrv和pdo_sqlsrv扩展已加载。若未加载:

  • 下载与PHP 8.1版本匹配的扩展包
  • 在php.ini中添加正确的扩展配置:
    extension=php_sqlsrv.dll
    extension=php_pdo_sqlsrv.dll
    
  • 重启Web服务器(IIS/Apache/Nginx)

5. 测试ODBC数据源连接

打开对应位数的ODBC数据源管理器(odbcad32.exe),创建系统DSN,输入服务器地址、数据库、sa账号密码,测试连接。若连接失败,根据提示排查SQL Server权限或网络问题。

内容的提问来源于stack exchange,提问作者Sayed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 16:27:43