方法:複数のアクティブな結果セット (MARS) を無効にする
複数のアクティブな結果セット (MARS) を有効にしていない SQL Server データ ソースに接続する必要がある場合、MultipleActiveResultSets 接続オプションを使用して、MARS を無効または有効にすることができます。
手順
MARS のサポートを無効にするには
次の接続オプションを使用します。
'MultipleActiveResultSets'=>false
アプリケーションが、開いているアクティブな結果セットのある接続でクエリを実行しようとする場合、2 番目のクエリ試行で、次のエラー情報が返されます。
接続は、結果が保留中のステートメントがあるために、この操作を処理できません。 他のクエリが接続を使用できるようにするには、すべての結果をフェッチするか、ステートメントをキャンセルまたは解放します。 MultipleActiveResultSets 接続オプションの詳細については、「 Connection Options」を参照してください。
SQLSRV の例
次の例は Microsoft SQL Server 用 Drivers for PHPの SQLSRV ドライバーを使用して、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);
?>
PDO_SQLSRV の例
次の例は、Microsoft SQL Server 用 Drivers for PHP の PDO_SQLSRV ドライバーを使用して、MARS サポートを無効にする方法を示しています。
<?php
// Connect to the local server using Windows Authentication and AdventureWorks database
$serverName = "(local)";
$database = "AdventureWorks";
try {
$conn = new PDO(" sqlsrv:server=$serverName ; Database=$database ; MultipleActiveResultSets=false ", NULL, NULL);
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
catch( PDOException $e ) {
die( "Error connecting to SQL Server" );
}
$conn = null;
?>