【发布时间】:2017-06-08 23:10:09
【问题描述】:
使用 Microsoft 的 PHP 驱动程序连接到 SQL Server 的 official guide 看起来很简单,所以我复制了大部分文本:
$server = "serverlocation\prod";
$database = array( "Database"=>"temp");
$conn = sqlsrv_connect($server, $database);
echo "<pre>";
if ( $conn ) {
echo "Connection established";
} else {
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
当我运行代码时,出现以下错误:
Connection could not be established.
Array
(
[0] => Array
(
[0] => 28000
[SQLSTATE] => 28000
[1] => 18456
[code] => 18456
[2] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Login failed for user '*****DOMAIN\MY_MACHINE_NAME*****'.
[message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Login failed for user '*****DOMAIN\MY_MACHINE_NAME*****'.
)
我在错误消息中列出的机器名称上运行此代码,这是一台 Windows 机器,但列出的机器名称不是我登录的用户帐户。我所在的用户帐户登录后拥有此数据库的权限,(我可以使用 MS SQL Server Managment Studio 连接到它就好了......)但是当我尝试使用此脚本进行连接时,它会显示我的机器名称而不是我的用户帐户。
我做错了什么?
【问题讨论】:
-
我对PHP服务器了解不多。它是您在 IIS 中安装的模块还是独立的?基本上它作为网络服务器帐户运行,而不是你。这里有一点讨论:serverfault.com/questions/105420/…
-
根据尼克的评论,如果您阅读了问题中链接到的 Microsoft 文档的第一段,它会说“重要的是要注意,在大多数情况下,这意味着 Web 服务器的进程标识或线程身份(如果 Web 服务器使用模拟)用于连接到服务器,不是最终用户的身份。”所以看起来 Web 服务器正在使用机器帐户连接到数据库。
标签: php sql-server