php - 使用 PHP 连接到远程 MSSQL 服务器不工作
问题描述
我在使用 PHP 版本为 7.3.5 连接到远程服务器时遇到问题
<?php
$serverName = "domain ipaddress";//<computer>\<instance name>
$connectionOptions = array("Database"=>"databasename", "Uid"=>"user", "PWD"=>"password");
$conn = sqlsrv_connect($serverName, $connectionOptions);
if ($conn) {
echo "connection was established";
} else {
echo "connection failed<br/>";
die (print_r(sqlsrv_errors(), true));
}
?>
错误消息如下:
[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]用户“user”登录失败。[消息] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]用户 'user' 登录失败。) [3] => 数组 ( [0] => 42000 [SQLSTATE] => 42000 [1] => 4060 [代码] => 4060 [2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]无法打开登录请求的数据库“databasename”。登录失败。[消息] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]无法打开登录请求的数据库“databasename”。登录失败的。 ) )4060 [2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]无法打开登录请求的数据库“databasename”。登录失败。[消息] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]无法打开登录请求的数据库“databasename”。登录失败。) ) 4060 [2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]无法打开登录请求的数据库“databasename”。登录失败。[消息] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]无法打开登录请求的数据库“databasename”。登录失败。) )
现在,如果我从本地主机上的 WAMP 服务器运行代码并通过 Microsoft SQL Management Studio 在我的本地主机上运行数据库,代码就可以工作了
然后我可以连接。
解决方案
我遇到了完全相同的错误。
我可以通过从数组中删除数据库参数来进行连接,如下所示:
$server ="server_ip";
$username ="dbusername";
$password ="dbpassword";
$connectionInfo = array("UID" => $username, "PWD" => $password);
$link = sqlsrv_connect($server, $connectionInfo);
if( $link === false ) {
die( print_r( sqlsrv_errors(), true));
}
显然,这意味着它只适用于指定了默认数据库的用户。我只需要连接到一个数据库,所以它对我有用。不确定为什么指定数据库会破坏它?
推荐阅读
- azure-devops - 如何在 Azure 数据工厂的数据流中过滤时间戳列
- c++ - 我应该在这里使用原始指针吗?
- azure - Azure ARM 模板依赖于不工作(重新部署成功)
- swift - 更新到 12.2 Exc_Bad_Access 后的 XCODE 模拟器错误(代码=50,地址=0x11b40e1ad)
- python - 如何为 Keras/Tensorflow 机器学习创建(嵌套?)csv 文件加载器?
- javascript - 当子项在 Wordpress 子菜单中处于活动状态时,从父项中删除活动类
- mongodb - 在循环中运行 mongodb 查询
- oracle - Oracle远程连接防火墙KO
- google-sheets - 计算逗号分隔的列列表中的唯一值
- python - URL 不能包含控制字符 - Python