Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Windows身份验证通过sqlsrv_connect连接到SQL Server_Php_Sql Server - Fatal编程技术网

Php 使用Windows身份验证通过sqlsrv_connect连接到SQL Server

Php 使用Windows身份验证通过sqlsrv_connect连接到SQL Server,php,sql-server,Php,Sql Server,使用Microsoft的PHP驱动程序连接SQL Server的方法似乎非常简单,因此我复制了大部分文本: $server = "serverlocation\prod"; $database = array( "Database"=>"temp"); $conn = sqlsrv_connect($server, $database); echo "<pre>"; if ( $conn ) { echo "Connection established"; } else

使用Microsoft的PHP驱动程序连接SQL Server的方法似乎非常简单,因此我复制了大部分文本:

$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));
}
我正在错误消息中列出的计算机名上运行此代码,这是一台Windows计算机,但列出的计算机名不是我登录的用户帐户。我登录的用户帐户具有此数据库的权限(我可以使用MS SQL Server Management Studio连接到此数据库,很好…),但当我尝试使用此脚本连接时,它会显示我的计算机名而不是我的用户帐户


我做错了什么?

假设您在网络上运行此操作:

  • 您应该使用IIS,而不是Apache†
  • IIS必须启用Windows身份验证
  • 必须禁用匿名身份验证
  • 您必须在
    php.ini中设置
    fastcgi.impersonate=1
假设您登录的帐户已被SQL Server识别,您应该可以继续使用。有关完整的讨论,请参阅


†在该帖子的评论中,作者建议这样做。

我对PHP服务器了解不多。它是安装在IIS中的模块还是独立模块?基本上,它是作为web服务器帐户运行的,而不是作为您的帐户运行的。这里有一点讨论:根据Nick的评论,如果你阅读了你在问题中链接到的Microsoft文档的第一段,它会说“重要的是要注意,在大多数情况下,这意味着Web服务器的进程标识或线程标识(如果Web服务器使用模拟)用于连接到服务器,而不是最终用户的身份。”因此,web服务器似乎正在使用计算机帐户连接到数据库。
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*****'.
        )