ΕΠΙΔΙΌΡΘΩΣΗ: Σφάλμα "Το αντικείμενο δεν είναι έγκυρο ή δεν είναι πλέον εκχωρημένο" με το Microsoft Jet

Αποποίηση ευθυνών για περιεχόμενο της Γνωσιακής βάσης που έχει αποσυρθεί

Αυτό το άρθρο αφορά προϊόντα για τα οποία η Microsoft δεν παρέχει πλέον υποστήριξη. Συνεπώς, το παρόν άρθρο παρέχεται "ως έχει" και δεν θα ενημερώνεται πλέον.

Συμπτώματα

Κατά το άνοιγμα και το κλείσιμο των συνδέσεων ή σύνολα εγγραφών χρησιμοποιώντας το πρόγραμμα οδήγησης ODBC για πρόσβαση ή η υπηρεσία παροχής Microsoft OLE DB για Jet, ενδέχεται να αναφερθεί το ακόλουθο μήνυμα λάθους:
Το αντικείμενο δεν είναι έγκυρο ή δεν είναι πλέον εκχωρημένο.
Αφού αναφερθεί αυτό το σφάλμα, δεν υπάρχουν άλλες ομάδες εγγραφών ή συνδέσεις μπορούν να ανοιχθούν από την ίδια διαδικασία.

Συμπεριλάβετε άλλα μηνύματα πιθανό σφάλμα που αναφέρθηκε στην εφαρμογή προγράμματος-πελάτη:
Ανοίξτε το παράθυρο πάρα πολλούς πίνακες.
Δεν είναι δυνατό το άνοιγμα άλλων πινάκων.

Προτεινόμενη αντιμετώπιση

Για να επιλύσετε αυτό το ζήτημα, εγκαταστήστε το πιο πρόσφατο Microsoft Jet 4.0 service pack 6. Για πρόσθετες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

239114 ΔΙΑΔΙΚΑΣΙΕΣ: απόκτηση του τελευταίου Service Pack για το μηχανισμό διαχείρισης βάσεων δεδομένων Microsoft Jet 4.0

Κατάσταση

Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα στα προϊόντα της Microsoft που παρατίθενται στην αρχή αυτού του άρθρου. Αυτό το ζήτημα επιδιορθώθηκε με το Jet 4.0 Service Pack 6 (SP6).

Περισσότερες πληροφορίες

Για να αναπαραγάγετε το ζήτημα, εκτελέστε το παρακάτω Microsoft Visual Basic for Applications (VBA) κώδικα:
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

Ιδιότητες

Αναγνωριστικό άρθρου: 304536 - Τελευταία αναθεώρηση: 9 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια