首页 > 解决方案 > 无法与 SQL Server 2019 建立连接

问题描述

我在使用 SQL Server 2019 的 IIS 上运行我的 PHP 项目时遇到问题。我的 PHP 版本是 7.0.26,并且我已经导入了 SQLSRV DLLS。

当我尝试使用我的系统登录时,弹出以下错误:

无法建立连接。Array ( [0] => Array ( [0] => 28000 [SQLSTATE] => 28000 [1] => 18456 [code] => 18456 [2] => [Microsoft][ODBC Driver 13 for SQL Server][ SQL Server]用户“sa”登录失败。[消息] => [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]用户“sa”登录失败。)[1] => 数组([0] => 28000 [SQLSTATE] => 28000 [1] => 18456 [code] => 18456 [2] => [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]用户“sa”登录失败。[ message] => [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]用户“sa”登录失败。))

这是我的连接字符串的一部分。

$myCon = array("Database"=>$myDB, "UID"=>$myUser, "PWD"=>$myPass);
$db = sqlsrv_connect( $myServer, $myCon);

另外,我尝试跟踪错误,例如添加错误的凭据以查看错误消息是否有一些更改,但它仍然相同。

我们尝试了一些配置,例如将服务器身份验证设置为“SQL Server 和 Windows 身份验证模式”,禁用防火墙,以及设置 Native 客户端配置。

IIS 配置已设置 MIME 类型、默认文档、连接字符串、应用程序池,并设置了所有路径配置。

我还只安装了 ODBC Driver 13、2015 Redistributable、.NET 4 框架。

谁能帮我?谢谢你。

标签: phpsqlsql-serveriis

解决方案


SA 帐户是在安装过程中创建的。SA 帐户众所周知,并且经常成为恶意用户的目标,因此建议禁用 sa 帐户,除非您的应用程序需要它。您可以在 SQL 服务器中创建一个新帐户或使用 Windows 身份验证来访问 SQL 数据库。

<?php
$serverName = "serverName\\sqlexpress"; //serverName\instanceName
$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}
?>

有关如何创建用户和使用 iis 进行配置的更多详细信息,请参阅以下链接:

https://forums.iis.net/post/2159167.aspx

https://docs.microsoft.com/en-us/sql/connect/php/programming-guide-for-php-sql-driver?view=sql-server-ver15

https://docs.microsoft.com/en-us/sql/connect/php/connecting-to-the-server?view=sql-server-ver15


推荐阅读