Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

operazione non consentita quando l'oggetto viene chiuso durante l'esecuzione di query più avanzate

Questo è un problema comune causato dal conteggio delle righe interpretato come output da una stored procedure quando si utilizza ADODB con SQL Server.

Per evitare ciò ricorda di impostare

SET NOCOUNT ON;

nella tua Stored Procedure questo impedirà ADODB di restituire un recordset chiuso, o se per qualsiasi motivo non vuoi farlo (non so perché puoi sempre usare @@ROWCOUNT per passare indietro il conteggio delle righe), puoi utilizzare

'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()

che restituisce il successivo ADODB.Recordset se ADODB ne ha rilevato uno restituito dalla stored procedure (potrebbe essere meglio controllare rs.State <> adStateClosed quando si tratta di più oggetti ADODB.Recordset).