Windows 認証を使用して接続する方法

既定では、SQL Server Driver for PHP は、Windows 認証を使用して SQL Server に接続します。重要なのは、これによってほとんどのシナリオで、エンド ユーザーの ID ではなく、Web サーバーのプロセス ID (Web サーバーが権限の借用を使用している場合はスレッド ID) を使用して、サーバーに接続することになるということです。

Windows 認証を使用して SQL Server に接続する場合、次の点を考慮する必要があります。

  • 接続を確立するには、Web サーバーのプロセス (またはスレッド) が実行されている資格情報が、有効な SQL Server ログインにマップされている必要があります。
  • SQL Server と Web サーバーが異なるコンピュータ上に存在する場合、SQL Server はリモート接続を可能にするように構成されている必要があります。

注意

接続を確立するときに、DatabaseConnectionPooling などの接続属性を設定できます。サポートされる接続属性の完全な一覧については、「sqlsrv_connect」を参照してください。

次の理由により、SQL Server への接続には、可能な限り Windows 認証を使用する必要があります。

  • 認証時に、資格情報がネットワーク上で転送されません。ユーザー名およびパスワードは、データベース接続文字列に埋め込まれません。つまり、悪意のあるユーザーまたは攻撃者が、ネットワークを監視したり、構成ファイル内の接続文字列を閲覧したりすることにより、資格情報を入手することはできません。
  • ユーザーに対し、中央集中型のアカウント管理、パスワード有効期限などのセキュリティ ポリシー、パスワードの最小文字数、および複数回の無効なログオン要求実施後のアカウントのロックアウトが適用されます。

Windows 認証が現実的な選択肢ではない場合は、「SQL Server 認証を使用して接続する方法」を参照してください。

次の例では、Windows 認証を使用して SQL Server のローカル インスタンスに接続します。接続が確立した後、データベースにアクセスしているユーザーのログインをサーバーに問い合わせます。

この例では、SQL Server と AdventureWorks データベースがローカル コンピュータにインストールされていることを前提としています。この例をブラウザから実行した場合、すべての出力はブラウザに書き込まれます。

<?php
/* Specify the server and connection string attributes. */
$serverName = "(local)";
$connectionInfo = array( "Database"=>"AdventureWorks");

/* Connect using Windows Authentication. */
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
     echo "Unable to connect.</br>";
     die( print_r( sqlsrv_errors(), true));
}

/* Query SQL Server for the login of the user accessing the
database. */
$tsql = "SELECT CONVERT(varchar(32), SUSER_SNAME())";
$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false )
{
     echo "Error in executing query.</br>";
     die( print_r( sqlsrv_errors(), true));
}

/* Retrieve and display the results of the query. */
$row = sqlsrv_fetch_array($stmt);
echo "User login: ".$row[0]."</br>";

/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>

参照

処理手順

SQL Server 認証を使用して接続する方法

概念

ドキュメントのコード例について

その他のリソース

プログラミング ガイド
SQL Server ログインを作成する方法
データベース ユーザーを作成する方法
ユーザー、ロール、およびログインの管理
ユーザーとスキーマの分離
GRANT (オブジェクトの権限の許可) (Transact-SQL)