2017-06-08 18 views
1

official guideを使用してsqlsrv_connectでSQL Serverに接続すると、かなり簡単と思われるので、私はほとんどの部分のテキストをコピー:私は実行するとがマイクロソフトからPHPドライバーを使用してSQL Serverに接続するためのWindows認証

$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マシンで、エラーメッセージにリストされているマシン名にこのコードを実行していますが、記載されているマシン名は、ユーザーアカウントではありません私はログインしています。ユーザーaccoun私はこのデータベースにアクセス権を持っています(MS SQL Server Managment Studioを使用して接続することもできます...)が、このスクリプトを使用して接続しようとすると、私の代わりに自分のマシン名が表示されますユーザーアカウント。

私は間違っていますか?

+0

PHPサーバーについてよく分かりません。 IISにインストールするモジュールですか、スタンドアロンですか?基本的にはWebサーバーアカウントとして実行されます。ここで少し議論があります:https://serverfault.com/questions/105420/which-user-does-php-iis6-use-to-read-write-files –

+1

ニックのコメントによると、最初の段落「ほとんどのシナリオでは、WebサーバーのプロセスIDまたはスレッドID(Webサーバーが偽装を使用している場合)がサーバーへの接続に使用されていることに注意することが重要です*エンドユーザーのIDではない* * "したがって、Webサーバーはマシンアカウントを使用してデータベースに接続しているように見えます。 – Nathan

答えて

1

あなたがウェブ上でこれを実行していると仮定すると:†

  • あなたは、Apache IISを使用していないする必要があります
  • IIS Windows認証を有効にする必要があります
  • 匿名認証を
  • 無効にする必要があります

あなたがログインしているアカウントがSQL Serverによって認識されると仮定すると、あなたは良いことがあるはずです。詳しくは、this pageを参照してください。

この投稿のコメントには、このmay also be possible with Apacheが示唆されています。

関連する問題