Como desabilitar vários conjuntos de resultados ativos (MARS)
Se você precisa se conectar a uma fonte de dados do SQL Server que não permite vários conjuntos de dados ativos (MARS), pode usar a opção de conexão MultipleActiveResultSets para desabilitar ou habilitar o MARS.
Procedimento
Para desabilitar o suporte de MARS
Use a seguinte opção de conexão:
'MultipleActiveResultSets'=>false
Se o aplicativo tentar executar uma consulta em uma conexão que tem um conjunto de resultados ativo aberto, a segunda tentativa de consulta retornará as informações de erro a seguir:
A conexão não pode processar esta operação porque há uma instrução com resultados pendentes. Para disponibilizar a conexão para outras consultas, busque todos os resultados ou então cancele ou libere a instrução. Para obter mais informações sobre a opção de conexão MultipleActiveResultSets, consulte Connection Options.
Exemplo com SQLSRV
O exemplo a seguir mostra como desabilitar o suporte de MARS usando o driver SQLSRV dos Drivers da Microsoft para PHP para SQL Server.
<?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);
?>
Exemplo com PDO_SQLSRV
O exemplo a seguir mostra como desabilitar o suporte para MARS usando o driver PDO_SQLSRV dos Drivers da Microsoft para PHP para SQL Server.
<?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;
?>