PHP (IIS) を使用して Microsoft SQL サーバー データベースに接続しようとしています。コードで提供されるユーザー/パスは、Access で ODBC 経由でデータベースにアクセスできる AD アカウントです。
$serverName = "servername";
$connectionInfo = array( "Database"=>"dbname", "UID"=>"myuser", "PWD"=>"mypass");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Connection established.<br />";
}else{
echo "Connection could not be established.<br /><pre>";
die( print_r( sqlsrv_errors(), true));
}
サーバー名とデータベース名と同様に、ユーザー名とパスワードは有効です。しかし、これはエラーを返しています:
[Microsoft][SQL Server Native Client 10.0][SQL Server]ユーザー 'myuser' のログインに失敗しました。
ユーザー名(ADの有効なユーザーであり、Accessを使用してこのデータベースに接続/リンクできます)についても試しました:
- DOMAIN.ORG\myuser
- DOMAIN.ORG\\myuser
- myuser@DOMAIN.ORG
私のドメイン ユーザー ( myuser
) は、AD を介してそのサーバーに対する管理者権限を持っています。しかし、それは同じLogin failed
エラーを返します。足りないものはありますか?Accessを使用して問題なく(同じユーザーで)この同じデータベースに接続できます。
Access での接続方法は、ローカル ユーザー用の ODBC データ ソースです。データ ソースは、「ネットワーク ログイン ID を使用した Windows NT 認証で」認証するように設定されています。PHPでそれを行うにはどうすればよいですか?
この偽装構成が考えられる原因ですか?
PHPはユーザーの下で実行されていますnt authority\iusr
を使用してログインしようとしていた場合iusr
、エラーメッセージはそうではありませんか?
このマシンで「TestDS」と呼ばれるデータ ソースを作成し、次のコードを使用してみました。
$conn = odbc_connect("TestDS", "", "");
しかし、それは私に与えます:
指定された DSN には、ドライバとアプリケーションの間のアーキテクチャの不一致が含まれています。SQLConnect の SQL 状態 IM014
Machine1 は Web ページ (PHP コードが Machine2 にある) にアクセスしようとしているクライアントであり、Machine2 のコードは Machine3 への SQL 接続を確立しています ( servername
)。