Ich bin beschäftigt Portieren einer klassischen ASP-Site. Für einen bestimmten Aufruf von SQL Server 2012 über ODBC, verwende ich den folgenden Code:Aufruf an SQL Server von klassischem ASP und ADO wird getrenntes Re-Cord-Set nicht geöffnet
objRS.CursorLocation = adUseClient
objRS.Open strSQL, objConn, adOpenStatic, adLockBatchOptimistic
Verwenden von SQL Server Profiler kann ich den Anruf sehen gemacht wird und die gleiche Abfrage direkt in SQL Server Management Studio ausgeführt kehrt mein Aufzeichnungen.
ich dann mit dem folgenden Code weiter:
Set objRS.ActiveConnection = Nothing
objConn.Close
set objConn = Nothing
Set GetRecordSet = objRS
set objRS = Nothing
wo GetRecordSet
der Name der Funktion ist.
In der aufrufenden Seite, wo ich meine Recordset gleich GetRecordSet
, führe ich eine Überprüfung mit if not RS.EOF then
Abstürze mit Abfrage kann nicht auf einem geschlossenen Recordset durchgeführt werden. Es sollte getrennt sein, aber aus irgendeinem Grund versagt es.
Update: Interessanterweise ist die SQL, die übergeben wird, die fehlschlägt, ein gespeicherter Prozess. Wenn ich den übergebenen Wert als select * from mytable
ändere, funktioniert es. Auf der db-Seite hat der Benutzer, mit dem ich mich über ODBC verbinde, Lese-/Schreib- und Ausführungsrechte für den Stored Proc.
Es ist bestehenden Code von der ursprünglichen Website. Ich versuche nur, so viel von dem Code zu portieren, wie es im Moment ist, bis eine komplette Neuschreibung erfolgt. – bilpor
Meinst du "wenn nicht GetRecordSet.EOF" ?, weil ich in deinem Code keine Variable namens "RS" sehe und objRS ist geschlossen. Abgesehen davon, warum schließen Sie das Recordset und die Verbindung nicht, nachdem Sie sie verwendet haben? Sie werden trotzdem bereinigt, wenn die Seite fertig ist, und die offene Verbindung kann verwendet werden, um bei Bedarf weitere Abfragen auszuführen. –
Die obigen sind nur die wichtigen Schnipsel. Wie bereits gesagt, funktioniert alles auf SQL Server 2005 unter Windows Server 2003, es spielt nur mit SQL Server 2012 auf Windows 2012. Ich habe versucht, das Recordset zu öffnen mit 'objRs.Open strSQL, objConn, adOpenStatic, adLockReadOnly, adCmdText' und Blick auf den Inhalt von objRS sofort beim Comeback und es hieß immer noch im unmittelbaren Fenster, dass das Objekt geschlossen wurde. – bilpor