You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

PHP7.2使用sqlsrv_connect连接MS SQL Server失败求助

排查PHP7.2连接MS SQL Server失败的问题

我来帮你一步步梳理可能的问题点,结合你的环境和代码,常见的故障原因大概有这些:

1. 服务器名称的拼写与实例名验证

先看你的代码里$serverName = "severname\MSSQLSERVER"——这里是不是打错了?应该是servername(少了个字母r)?如果是笔误,那肯定连不上。另外:

  • 如果你的SQL Server是默认实例,其实可以直接写服务器IP/主机名,不用加\MSSQLSERVER
  • 如果是命名实例,要把MSSQLSERVER改成实际的实例名(比如常见的SQLEXPRESS)。

2. 驱动与PHP版本的兼容性

你安装的Microsoft Drivers 5.2 for PHP确实支持PHP7.2,但要注意:

  • 驱动的线程安全(TS)/非线程安全(NTS)版本必须和你的PHP完全匹配。可以通过phpinfo()查看PHP的线程安全状态,再确认驱动是否对应;
  • 检查ODBC Driver 17是否正确安装:打开系统的「ODBC数据源管理器」,在「驱动」标签页里能看到ODBC Driver 17 for SQL Server才说明安装成功。

3. 连接参数的正确性

  • 确认UIDPWD是SQL Server的SQL登录账号(不是Windows本地账号),如果想用Windows集成身份验证,要修改连接数组:
    $conn_array = array(
        "Database" => "databasename",
        "Authentication" => SQLSRV_AUTH_WINDOWS
    );
    
  • 检查databasename的拼写是否正确,同时确认这个SQL账号有访问该数据库的权限(可以在SQL Server Management Studio里测试登录并查看权限)。

4. 网络与防火墙限制

  • 确认SQL Server所在服务器的防火墙开放了对应端口:默认实例是1433(TCP),命名实例需要开放UDP 1434端口(供SQL Server Browser服务使用);
  • 在PHP服务器上测试连通性:用telnet 你的服务器IP 1433或者PowerShell命令Test-NetConnection 你的服务器IP -Port 1433,如果连不通,说明网络有问题。

5. PHP扩展加载情况检查

  • 打开php.ini文件,确认已经启用了sqlsrvpdo_sqlsrv扩展:
    extension=sqlsrv
    extension=pdo_sqlsrv
    
  • 重启你的Web服务器(Apache/Nginx/IIS),然后通过phpinfo()页面查看是否有sqlsrv的相关配置项,确认扩展已经成功加载。

6. 利用错误信息精准定位

你已经用sqlsrv_errors()输出错误,把具体的错误内容贴出来会更高效。比如常见的错误类型:

  • 「找不到服务器或实例」:大概率是服务器名称、端口或网络的问题;
  • 「登录失败」:账号密码错误或权限不足;
  • 「驱动相关错误」:扩展未加载或版本不兼容。

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

火山引擎 最新活动