Korrektur für ASP-Seiten, die kein ADO-Recordset basierend auf einer #Temp-Tabelle anzeigen

Hier ist das Problem: Ihre asp-Seite zeigt die Daten an, die in einer von SQL generierten #temp-Tabelle enthalten sind. Wenn Sie die Seite ausführen, wird eine Fehlermeldung angezeigt, die besagt, dass der Vorgang beim Schließen des Objekts nicht zulässig ist. Wenn Sie den SQL-Befehl in einem Abfragefenster ausführen, werden die Daten jedoch wie erwartet angezeigt.


Beim Versuch, eine ASP-Seite auszuführen, die aus der #temp-Tabelle abgerufen wird, wird jedoch eine böse Nachricht angezeigt, die etwa wie folgt aussieht:
ADODB.Recordset-Fehler '800a0e78'
Der Betrieb ist nicht zulässig, wenn das Objekt geschlossen ist.

Dies geschieht, weil jede SQL-Anweisung in Ihrer gespeicherten Prozedur ein Ergebnis zurückgibt. Dies ist ein integriertes Verhalten des SQL Server-OLEDB-Providers (der SQL Server-ODBC-Provider führt dies nicht durch). Das Ergebnis kann eine Ergebnismenge sein, aber wenn Ihre ASP-Seite die Anzeige der Ergebnismenge nicht zulässt, ist das Ergebnis eine Anzahl der betroffenen Zeilen.

Fügen Sie die folgende Zeile am Anfang Ihrer gespeicherten Prozedur hinzu, um zu verhindern, dass der SQL Server-OLEDB-Anbieter die Anzahl der betroffenen Zeilen zurückgibt.NOCOUNT EINSTELLEN

Nachdem Sie die gespeicherte Prozedur geändert haben, sollte auf der betreffenden ASP-Seite die gewünschte Ergebnismenge ohne weitere Probleme angezeigt werden.

Hinweis: Ein anderer Fehler erfordert die NOCOUNT EINSTELLEN Zeile ist:
ADODB.Recordset-Fehler '800a0cc1'
Artikel kann nicht in der Sammlung gefunden werden, die dem angeforderten Namen oder der Ordinalzahl entspricht.