php - 无法与 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 框架。
谁能帮我?谢谢你。
解决方案
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/connecting-to-the-server?view=sql-server-ver15
推荐阅读
- python - 如何在 django 中使两个模型相互关联(反之亦然)。一个公司应该有多个目录,但一个目录只能有一个公司
- python-3.x - 如何在 Python + Selenium 中使用 cookie 来抓取网站
- sql - SQL - 选择子查询中的最后一条记录,包括其他条件
- javascript - React 中的其他组件未检测到存储更改 - MobX
- python - LSTM,多输入:3 天 *(136 个元素的数组 + 2 个整数)
- c# - unity scrollRect 没有通过脚本滚动到最后
- c++ - 从输入文件中读取参数与将其设置为 .h 文件中的静态常量 - 编译器优化
- python - 使用 python 从文档中识别与金融相关的单词
- ffmpeg - ffmpeg 安装:pkg-config 找不到包(使用 Homebrew)
- css - Google 移动可用性 > 内容比屏幕更宽