UPDATE: "Objekt ungültig oder nicht mehr" Fehler mit Microsoft Jet

Veralteter Haftungsausschluss für KB-Inhalte

Dieser Artikel wurde für Produkte geschrieben, für die Microsoft keinen Support mehr anbietet. Deshalb wird dieser Artikel im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.

Problembeschreibung

Beim Öffnen und Schließen von Verbindungen oder Recordsets Microsoft ODBC-Treiber für Access oder Microsoft OLE DB Provider für Jet verwenden, kann der folgende Fehler gemeldet:
Objekt ungültig oder nicht mehr.
Nach diesem Fehler können keine Datensätze oder Verbindungen vom gleichen Prozess geöffnet werden.

Andere mögliche Fehlermeldungen an die Clientanwendung enthalten:
Zu viele Tabellen geöffnet.
Keine weiteren Tabellen geöffnet

Problemlösung

Um dieses Problem zu beheben, installieren Sie das neueste Microsoft Jet 4.0 Servicepack 6. Für Weitere Informationen klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

239114 wie: erhalten Sie das neueste Servicepack für Microsoft Jet 4.0-Datenbank-Engine

Status

Microsoft hat bestätigt, dass es ein Problem bei den Microsoft-Produkten handelt, die zu Beginn dieses Artikels aufgeführt sind. Dieses Problem wurde in Jet 4.0 Service Pack 6 (SP6) behoben.

Weitere Informationen

Führen Sie die folgenden Microsoft Visual Basic for Applications (VBA)-Code zum Reproduzieren des Problems:
Public Sub Jet_TableID_Repro()Dim conn As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.recordset
Dim i As Long

Set conn = New ADODB.Connection
' Modify this connection string to point to some blank database.
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\YourTestDatabase.mdb;"

' Drop and re-create test query.
On Error Resume Next
conn.Execute "drop procedure sp_param_test", , adExecuteNoRecords
On Error GoTo 0
conn.Execute "create procedure sp_param_test as " & _
"parameters iInput Long; " & _
"select iInput as iOutput;", , adExecuteNoRecords

For i = 1 To 10000

' Code should fail at around 2000-3000 iterations.
Set rs = New ADODB.recordset
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = conn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "sp_param_test"
cmd.Parameters.Append cmd.CreateParameter("iInput", adInteger)
cmd.Parameters(0).value = 12

' This will fail at around 2000-3000 iterations.
rs.Open cmd, , adOpenKeyset, adLockOptimistic
Set cmd = Nothing
Debug.Print i
DoEvents
rs.Close
Set rs = Nothing

Next i

End Sub

Eigenschaften

Artikelnummer: 304536 – Letzte Überarbeitung: 09.01.2017 – Revision: 1

Feedback