Fix för ASP-sidor som inte kommer att visa en ADO-uppsättning baserat på ett #Temp-tabell

Här är problemet: din asp-sida är utformad för att visa data som finns i en SQL-genererad #temp-tabell. När du kör sidan får du ett fel som anger att åtgärden inte är tillåten när objektet är stängt. Om du kör SQL-kommandot i ett frågefönster visas data som förväntat.


Försöker köra en ASP-sida som drar från #temp-tabellen, men du får ett otäckt meddelande som ser något ut så här:
ADODB.Recordset error '800a0e78'
Drift är inte tillåtet när objektet är stängt.

Detta händer eftersom varje SQL-formulering i din lagrade procedur returnerar ett resultat. Detta är ett inbyggt beteende hos SQL Server OLEDB-leverantören (SQL Server ODBC-leverantören gör inte detta). Resultatet kan vara en resultats, men om din ASP-sida är barfing vid visning av resultaten, blir resultatet som returneras ett antal rader som berörs.

För att stoppa SQL Server OLEDB-leverantören från att returnera räkningen av rader som berörs, lägg till följande rad till början av din lagrade procedur:Ange NOCOUNT ON

När du har ändrat den lagrade proceduren ska den aktuella ASP-sidan visa önskningsresultatet utan några ytterligare problem.

Obs! Ett annat fel som kräver Ange NOCOUNT ON rad är:
ADODB.Recordset error '800a0cc1'
Artikeln kan inte hittas i samlingen motsvarande det begärda namnet eller ordinalen.