SQLSRV y selecciones múltiples en el procedimiento almacenado

Tengo un procedimiento almacenado que crea una tabla temporal (#test), la llena con datos de otra tabla, ejecuta 3 selecciones en esta tabla temporal y la suelta.

La tabla original tiene más de 20 GB de tamaño y las 3 declaraciones SELECT contienen muchas condiciones diferentes en el SP original.

Estoy ejecutando el SP desde PHP usando SQLSRV, sin embargo, solo puedo administrar para recuperar los 2 primeros conjuntos de resultados.

Si ejecuto el SP desde MSSMS, funcionará bien y devolverá los 3 conjuntos de resultados como se esperaba. Pero desde PHP solo devolverá 2 (probó cada combinación).

No estoy seguro si esto es un problema con el controlador, sqlsrv_fetch_array o sqlsrv_next_result.

Ejemplo de SP (las declaraciones de selección son demasiado grandes, así que las reanudaré):

CREATE PROCEDURE sp_transfers
@dt date,
@campaign varchar(16)
AS
BEGIN
CREATE TABLE #test ( [column definitions...] )

BEGIN
INSERT INTO #test SELECT * FROM sometable WHERE dt = @dt AND campaign = @campaign

SELECT * FROM #test ...
SELECT * FROM #test ...
SELECT * FROM #test ...

DROP TABLE #test
END

Ahora desde PHP este es mi código de prueba:

$q = sqlsrv_query($conn,"EXEC sp_transfers @dt='2013-10-01',@campaign='1234'");

sqlsrv_next_result($q);
var_dump(sqlsrv_fetch_array($q)); //OK - data as expected - 1st resultset
sqlsrv_next_result($q);
var_dump(sqlsrv_fetch_array($q)); //OK - data as expected - 2nd resultset
sqlsrv_next_result($q);
var_dump(sqlsrv_fetch_array($q)); // EMPTY

Sin embargo, si intento esto funciona:

sqlsrv_next_result($q);
sqlsrv_next_result($q);
var_dump(sqlsrv_fetch_array($q)); //OK - data as expected - 2nd resultset
sqlsrv_next_result($q);
var_dump(sqlsrv_fetch_array($q)); // OK - 3rd resultset shows up

Lo mismo con esta combinación:

sqlsrv_next_result($q);
var_dump(sqlsrv_fetch_array($q)); //OK - data as expected - 1st resultset
sqlsrv_next_result($q);
sqlsrv_next_result($q);
var_dump(sqlsrv_fetch_array($q)); // OK - 3rd resultset shows up

¿Estoy haciendo algo mal aquí? O hay una manera de obtener los 3 conjuntos de resultados de un solo SP.

Gracias por adelantado.

Respuestas a la pregunta(2)

Su respuesta a la pregunta