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

PHP连接SQL Server 2008/2019失败:SSPI上下文生成错误求助

PHP连接SQL Server时SSPI上下文生成失败的解决办法

核心问题定位

你的代码里重复赋值覆盖了$connectionInfo变量,原本设置的数据库名称、账号密码、身份验证方式等关键参数被清空,只保留了字符集配置,这是引发Cannot generate SSPI context(无法生成SSPI上下文)错误的直接原因。


分步解决

  1. 修复连接参数赋值错误
    把所有必要的连接参数合并到同一个数组中,不要重复赋值覆盖。根据你使用的身份验证方式二选一:

    • SQL Server身份验证(推荐,避免SSPI配置问题)
      移除Trusted Connection配置,确保UID(用户名)和PWD(密码)正确:

      $connectionInfo = [
          "Database" => "XXX",
          "UID" => "XX",
          "PWD" => "XX",
          "CharacterSet" => "UTF-8"
      ];
      
    • Windows身份验证(Trusted Connection)
      无需填写UID和PWD,但要确保运行PHP的进程(如IIS应用池账户、Apache运行账户)拥有SQL Server的访问权限:

      $connectionInfo = [
          "Database" => "XXX",
          "Trusted Connection" => "yes",
          "CharacterSet" => "UTF-8"
      ];
      
  2. 验证服务器地址格式
    确保$serverName格式正确:

    • 带端口:"服务器名, 端口号"(如"WIN-SERVER, 1433")
    • 带实例名:"服务器名\实例名"(如"PANDORAS-BOX\EXP_2008R2")
  3. 排查SSPI相关配置(仅Windows身份验证时需要)

    • 检查SQL Server服务账户的SPN(服务主体名称)是否注册,可通过命令setspn -L <SQL服务账户名>查看
    • 确保运行PHP的账户在SQL Server中被授予登录权限
    • 检查Kerberos协议是否正常,避免NTLM身份验证失败
  4. 确认驱动与版本兼容
    确保已正确安装ODBC Driver 17 for SQL Server,且该驱动支持你的SQL Server版本(SQL Server 2008需确认驱动兼容性,必要时可尝试降级驱动版本)


修正后的完整代码示例(SQL Server身份验证)

<?php
// 替换为实际的服务器地址
$serverName = "YourServerName, 1433"; 
$connectionInfo = [
    "Database" => "XXX",
    "UID" => "XX",
    "PWD" => "XX",
    "CharacterSet" => "UTF-8"
];

$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn) {
    echo "连接成功<br />";
} else {
    echo "连接失败<br />";
    die(print_r(sqlsrv_errors(), true));
}

$sql = "SELECT Account_Id, Account_No FROM Savings_Account WHERE IPKS IS NULL";
$params = [];
$options = ["Scrollable" => SQLSRV_CURSOR_KEYSET];
$stmt = sqlsrv_query($conn, $sql, $params, $options);

if ($stmt) {
    while ($row = sqlsrv_fetch_array($stmt)) {
        echo json_encode($row) . "<br />";
    }
} else {
    die(print_r(sqlsrv_errors(), true));
}

sqlsrv_close($conn);
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 08:35:59