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

PHP无法连接SQL Server Express 2016:主机解析失败求助

嘿,我来帮你排查这个PHP连接SQL Server Express 2016的问题——我之前也碰到过类似的情况,大概率是配置细节没到位,咱们一步步来:

先检查SQL Server Express的核心配置

这些是最容易踩坑的点,先确认数据库端没问题:

  • 开启远程连接协议:打开SQL Server配置管理器,找到「SQL Server网络配置」→「SQLEXPRESS的协议」,确保TCP/IP是启用状态。双击TCP/IP,在「IP地址」tab里,找到IPAll的TCP端口(默认1433,要是用动态端口就留空,但得确保SQL Server Browser服务在运行)。
  • 防火墙放行端口:不管是本地还是远程连接,Windows防火墙都要放行SQL Server的端口(默认1433),或者直接放行sqlservr.exe程序路径(一般在C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\Binn)。
  • 验证登录账号权限:如果你用的是SQL Server身份验证账号,要确保这个账号:
    1. 在SQL Server里有「登录」权限,并且允许连接到数据库引擎;
    2. 拥有目标数据库的访问权限(比如db_datareader/db_datawriter,或者更高权限)。
  • 确认服务器名称格式:Express实例的名称默认是主机名\SQLEXPRESS,远程连接的话可以换成IP地址\SQLEXPRESS;如果是本地测试,也可以试试.\SQLEXPRESS或者localhost\SQLEXPRESS,避免主机名解析问题。

再确认PHP端的扩展和设置

PHP 7.x连接SQL Server必须依赖官方的扩展,这一步别漏了:

  • 安装并启用SQL Server扩展:下载对应PHP版本(7.x)、系统位数(x86/x64)的sqlsrv和pdo_sqlsrv扩展,放到PHP的ext目录里,然后在php.ini里添加两行:
    extension=sqlsrv
    extension=pdo_sqlsrv
    
    重启IIS之后,用phpinfo()查看是否加载成功,搜索sqlsrv就能看到。
  • 查看PHP错误日志:别只靠echo主机名,打开php.ini里的error_log配置,指定日志文件路径,然后运行连接代码,日志里会给出具体的错误信息(比如连接超时、实例找不到、权限不足),这是排查问题的关键。

测试代码示例

给你两个最简测试代码,分别用sqlsrv和PDO扩展,替换成你的实际参数就行:

sqlsrv扩展测试

<?php
$serverName = "你的主机名\SQLEXPRESS"; // 比如DESKTOP-XXXX\SQLEXPRESS 或者 192.168.1.100\SQLEXPRESS
$connectionInfo = [
    "Database" => "你的测试数据库名",
    "UID" => "SQL账号",
    "PWD" => "账号密码"
];
$conn = sqlsrv_connect($serverName, $connectionInfo);

if ($conn) {
    echo "✅ 数据库连接成功!";
} else {
    echo "❌ 连接失败,错误信息:<br>";
    print_r(sqlsrv_errors());
}
?>

PDO扩展测试

<?php
try {
    $dsn = "sqlsrv:Server=你的主机名\SQLEXPRESS;Database=你的测试数据库名";
    $conn = new PDO($dsn, "SQL账号", "账号密码");
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "✅ 数据库连接成功!";
} catch (PDOException $e) {
    echo "❌ 连接失败,错误信息:" . $e->getMessage();
}
?>

额外的排查技巧

  • 用SSMS测试连接:在部署PHP的IIS服务器上,打开SQL Server Management Studio,用和PHP代码相同的账号、服务器名称连接SQL Server Express。如果SSMS都连不上,那问题肯定在数据库配置或者网络,和PHP无关;如果SSMS能连上,再回头查PHP的扩展和代码。
  • 确认SQL Server服务状态:打开服务管理器,确保「SQL Server (SQLEXPRESS)」和「SQL Server Browser」(如果用实例名连接)都处于运行状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:05:31