如何在PHP7中通过Windows身份验证远程连接SQL Server?
解决PHP连接SQL Server(Windows认证)的登录失败问题
首先看你的情况,你已经能通过Windows认证(SSMS和Excel ODBC)正常访问SQL Server,但PHP代码里的配置有问题,才导致Login failed for user 'ramunasc'的错误。
问题根源
你在PHP的$connectionInfo里指定了UID参数,但Windows身份认证不需要手动传入用户名,它依赖运行PHP的进程所使用的Windows账户来完成认证。你的代码里传入UID="ramunasc",反而会让SQL Server误以为你要使用SQL Server身份验证登录,而非Windows认证,这直接导致了登录失败。
修正后的代码
把连接信息改成包含Trusted_Connection参数,去掉多余的UID:
$serverName = "MP-SQL2\SQL2008"; $connectionInfo = array( "Database"=>"vordata_sql", "Trusted_Connection"=>"yes" ); /* Connect using Windows Authentication. */ $conn = sqlsrv_connect( $serverName, $connectionInfo); if( $conn === false ) { echo "Unable to connect.</br>"; die( print_r( sqlsrv_errors(), true)); }
额外需要注意的点
- 确认运行PHP的Web服务器(比如IIS、Apache)所使用的Windows账户,是否拥有访问SQL Server和
vordata_sql数据库的权限。比如IIS默认使用IIS APPPOOL\你的应用池名称这个账户,你需要在SQL Server里给这个账户分配对应的登录权限和数据库访问权限。 - 检查你的PHP环境是否安装了正确版本的SQL Server驱动(比如ODBC Driver 11或更高版本),确保它和SQL Server 2008兼容。
这样调整后应该就能解决你的登录失败问题了,试试看!
内容的提问来源于stack exchange,提问作者Ramūnas Čepaitis
相关产品推荐
相关产品推荐

