複数のアクティブな結果セット (MARS) を無効にする方法
この機能は、SQL Server Driver for PHP Version 1.1 で追加されました。
SQL Server Driver for PHP の初回リリースは、SQL Server の複数のアクティブな結果セット (MARS) 機能に依存しています。この機能は SQL Server 2005 で導入され、これを使用することで、初期クエリの結果セットを閉じる必要なく、追加のクエリを実行できます。
しかし、MARS を有効にしない SQL Server データ ソースへの接続が必要な場合があります。
SQL Server Driver for PHP Version 1.1 では、MARS を有効または無効にするための MARS 接続オプションが導入されました。
MARS サポートを SQL Server Driver for PHP Version 1.1 アプリケーションから無効にするには
次の接続オプションを使用します。
'MultipleActiveResultSets'=>false
アプリケーションが、開いたアクティブな結果セットを持つ接続上でクエリを実行しようとする場合、2 番目のクエリを実行しようとすると、次のエラー情報が返されます。
この接続は、保留中の結果があるステートメントがあるため、この操作を処理できません。接続を他のクエリで使用できるようにするには、すべての結果をフェッチするか、ステートメントの取り消しまたは解放を行います。詳細については、MultipleActiveResultSets 接続オプションに関する製品マニュアルを参照してください。
例
以下の例は、MARS サポートを無効にする方法を示しています。
<?php
/* Connect to the local server using Windows Authentication and
specify the AdventureWorks database as the database in use. */
$serverName = "MyServer";
$connectionInfo = array( "Database"=>"AdventureWorks", 'MultipleActiveResultSets'=> false);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
echo "Could not connect.\n";
die( print_r( sqlsrv_errors(), true));
}
sqlsrv_close( $conn);
?>