sql >> Base de Datos >  >> RDS >> Sqlserver

operación no permitida cuando el objeto está cerrado al ejecutar una consulta más avanzada

Este es un problema común causado por el recuento de filas que se interpreta como salida de un procedimiento almacenado cuando se usa ADODB con SQL Server.

Para evitar esto, recuerde configurar

SET NOCOUNT ON;

en su procedimiento almacenado, esto evitará que ADODB devuelva un conjunto de registros cerrado, o si por alguna razón no desea hacer esto (no estoy seguro de por qué, ya que siempre puede usar @@ROWCOUNT para pasar el conteo de filas hacia atrás), puede usar

'Return the next recordset, which will be the result of the Stored Procedure, not 
'the row count generated when SET NOCOUNT OFF (default).
Set rs = rs.NextRecordset()

que devuelve el siguiente ADODB.Recordset si ADODB ha detectado uno devuelto por el procedimiento almacenado (podría ser mejor verificar rs.State <> adStateClosed cuando se trata de múltiples objetos ADODB.Recordset).