sql >> Databasteknik >  >> RDS >> Sqlserver

operation inte tillåten när objektet är stängt när mer avancerad fråga körs

Detta är ett vanligt problem som orsakas av att radantal tolkas som utdata från en lagrad procedur när du använder ADODB med SQL Server.

För att undvika detta kom ihåg att ställa in

SET NOCOUNT ON;

i din lagrade procedur kommer detta att stoppa ADODB från att returnera en stängd postuppsättning, eller om du av någon anledning inte vill göra detta (osäker på varför eftersom du alltid kan använda @@ROWCOUNT för att skicka radräkningen tillbaka), kan du använda

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

som returnerar nästa ADODB.Recordset om ADODB har upptäckt att en returneras av den lagrade förfarandet (kan vara bäst att kontrollera rs.State <> adStateClosed vid hantering av flera ADODB.Recordset-objekt).




  1. Problemet med fönsterfunktioner och vyer

  2. Vilka är begränsningarna för SQL Server Compact? (Eller - hur väljer man en databas att använda på MS-plattformar?)

  3. Komplex Postgres-fråga

  4. Designa en datamodell för ett hotellrumsbokningssystem