Αναγν. άρθρου: 269495 - Τελευταία αναθεώρηση: Κυριακή, 29 Μαΐου 2011 - Αναθεώρηση: 4.0

PRB: "πολλές βήμα OLE DB λειτουργία δημιούργησε σφάλματα" κατά το άνοιγμα σύνδεσης ADO

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

Σε αυτήν τη σελίδα

Ανάπτυξη όλων | Σύμπτυξη όλων

Συμπτώματα

Όταν προσπαθείτε να ανοίξετε μια σύνδεση ActiveX Data Objects (ADO), ενδέχεται να λάβετε το ακόλουθο μήνυμα λάθους:
Σφάλμα χρόνου εκτέλεσης ' -2147217887 (80040e21):»

Η OLE DB λειτουργία πολλαπλών βημάτων δημιούργησε σφάλματα. Ελέγξτε κάθε τιμή κατάστασης OLE DB, εάν είναι διαθέσιμο. Δεν έχει γίνει εργασία.

Αιτία

Ακολουθούν δύο πιθανές αιτίες για αυτό το σφάλμα:
  • Στο μητρώο, κάτω από το κλειδί για το CLSID ένα πάροχο OLE DB μπορεί να είναι μια καταχώρηση με το όνομα OLEDB_SERVICES. Εάν η υπηρεσία παροχής OLE DB που χρησιμοποιείται για τη σύνδεση ADO δεν έχει εγγραφή OLEDB_SERVICES και ADO προσπαθεί να ορίσετε μια ιδιότητα που δεν υποστηρίζεται από την υπηρεσία παροχής, προκύπτει το σφάλμα. Για περισσότερες πληροφορίες σχετικά με αυτήν την καταχώρηση μητρώου, ανατρέξτε στην ενότητα "Προτεινόμενη αντιμετώπιση".
  • Εάν υπάρχει καταχώρηση OLEDB_SERVICES, αλλά υπάρχει ένα πρόβλημα στη συμβολοσειρά σύνδεσης ADO, προκύπτει το σφάλμα.
Εάν η καταχώρηση μητρώου OLEDB_SERVICES δεν υπάρχει, η κλήση για να ορίσετε μια ιδιότητα πραγματοποιείται απευθείας με την υπηρεσία παροχής. Εάν η υπηρεσία παροχής δεν υποστηρίζει την ιδιότητα του SetProperties Κλήση OLE DB που γίνονται από το ADO θα αποτύχει. Αυτό είναι ένα ανεπανόρθωτο σφάλμα αν η ιδιότητα απαιτείται για τη δημιουργία μιας σύνδεσης. Εάν η ιδιότητα συμπεριλήφθηκε ρητά στη συμβολοσειρά σύνδεσης, είναι μάλλον απαραίτητη.

Εάν η ρύθμιση της ιδιότητας είναι προαιρετική, το σφάλμα δεν είναι ανεπανόρθωτο. Αυτό συμβαίνει όταν συνδέεστε χωρίς ρητά ορίζοντας την ιδιότητα στη συμβολοσειρά σύνδεσης. Στην περίπτωση αυτή, το ADO ορίζει την ιδιότητα στην τιμή True αλλά επισημαίνει ως προαιρετική.

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

Για να επιλύσετε αυτό το ζήτημα, χρησιμοποιήστε μία από τις ακόλουθες μεθόδους:
  • Χρησιμοποιήστε τη λέξη-κλειδί "Παραμένουν Info ασφαλείας" στη συμβολοσειρά σύνδεσης ADO.
  • Προσθέστε την καταχώρηση μητρώου OLEDB_SERVICES ως εξής:

    Σημείωση Μπορείτε να δημιουργήσετε μόνο την τιμή OLEDB_SERVICES στα κλειδιά μητρώου των υπηρεσιών παροχής που υποστηρίζει COM συγκέντρωση. Η υπηρεσία παροχής Exchange OLE DB υποστηρίζει συνάθροιση COM και όταν δημιουργήσετε αυτήν τιμές, λαμβάνετε το ακόλουθο μήνυμα λάθους:
    0x80040E22
    Καθορίστηκε IUnknown μη NULL και είτε η διασύνδεση που ζητήθηκε δεν ήταν IUnknown, ή η υπηρεσία παροχής δεν υποστηρίζει συνάθροιση COM.

    Σημαντικό Αυτή η ενότητα, μέθοδος ή εργασία περιέχει βήματα που σας καθοδηγούν να τροποποιήσετε το μητρώο. Ωστόσο, ενδέχεται να προκύψουν σοβαρά προβλήματα εάν δεν τροποποιήσετε σωστά το μητρώο. Επομένως, βεβαιωθείτε ότι ακολουθείτε προσεκτικά αυτά τα βήματα. Για επιπλέον προστασία, αντίγραφο ασφαλείας του μητρώου πριν το τροποποιήσετε. Στη συνέχεια, μπορείτε να επαναφέρετε το μητρώο εάν προκύψει κάποιο πρόβλημα. Για περισσότερες πληροφορίες σχετικά με τον τρόπο δημιουργίας αντιγράφων ασφαλείας και επαναφοράς του μητρώου, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
    322756  (http://support.microsoft.com/kb/322756/ ) Τρόπος δημιουργίας αντιγράφων ασφαλείας και επαναφοράς του μητρώου στα Windows
    1. Ξεκινήστε τον Επεξεργαστή μητρώου.
    2. Στο μητρώο, HKEY_CLASSES_ROOT\CLSID, βρείτε το αναγνωριστικό CLSID της υπηρεσίας παροχής OLE DB. Για παράδειγμα, το ακόλουθο κλειδί μητρώου είναι για το παροχής Microsoft OLE DB για SQL Server (SQLOLEDB):
      HKEY_CLASSES_ROOT\CLSID\ {0C7FF16C-38E3-11 d 0-97AB-00C04FC2AD98}
      Κάντε κλικ το CLSID και στη συνέχεια το Επεξεργασία μενού, κάντε κλικ στο κουμπί Προσθήκη τιμής και προσθέστε την ακόλουθη τιμή μητρώου:
      Όνομα τιμής: OLEDB_SERVICES
      Τύπος δεδομένων: REG_DWORD
      Τιμή: 0xFFFFFFFF
      Σημείωση Για να βρείτε το CLSID για την υπηρεσία παροχής που χρησιμοποιείτε, κάντε αναζήτηση για την υπηρεσία παροχής ProgID (για παράδειγμα, SQLOLEDB) στο μητρώο, HKEY_LOCAL_MACHINE\SOFTWARE\Classes\. Στην περιοχή ProgID, θα είναι ένα κλειδί ονομάζεται CLSID.
  • Εάν πληρούνται οι προϋποθέσεις αυτές και εξακολουθείτε να λαμβάνετε το σφάλμα, εξετάστε τη συμβολοσειρά σύνδεσης για άλλα πιθανά σφάλματα.

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

Βήματα για την αναπαραγωγή της συμπεριφοράς

Επικολλήστε τον παρακάτω κώδικα σε ένα έργο της Microsoft Visual Basic Standard EXE ορίστε μια αναφορά έργου στο Microsoft ActiveX Data Objects και στη συνέχεια να το εκτελέσετε. Το σφάλμα προκύπτει, εάν χρησιμοποιείτε την υπηρεσία παροχής DTSFlatFile ή οποιαδήποτε υπηρεσία παροχής OLE DB που δεν υποστηρίζει μία από τις ιδιότητες στη συμβολοσειρά σύνδεσης, όπως "Παραμένουν Info ασφαλείας".
Private Sub Command1_Click()

Dim cn As New Connection

cn.Open "Provider=DTSFlatFile;Persist Security Info=True;" & _
            "Data Source=Mysql;Mode=Read;File Format=0;File Type=1;" & _
            "Skip Rows=0;First Row Column Name=False;Number of Column=0;" & _
            "Max characters per delimited column=255;" '<------ Error Occurs Here
            
End Sub
				

Αναφορές

Για πρόσθετες πληροφορίες σχετικά με αυτό το σφάλμα, κάντε κλικ στους αριθμούς των άρθρων παρακάτω, για να προβάλετε τα άρθρα της Γνωσιακής Βάσης της Microsoft:
228935  (http://support.microsoft.com/kb/228935/ ) ΕΠΙΔΙΌΡΘΩΣΗ: Μεταβλητές συμβολοσειράς δεν έχει προετοιμαστεί, τιμές κενή συμβολοσειρά, παροχής Jet και σφάλματα Παρουσιάστηκε
253157  (http://support.microsoft.com/kb/253157/ ) Σφάλμα: Πεδίο ταυτότητας παραμένει μόνο για ανάγνωση μετά την εκτέλεση ΟΡΙΣΜΌΣ IDENTITY_INSERT πρόταση

Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft ActiveX Data Objects 2.7
Λέξεις-κλειδιά: 
kbprb kbprovider kbmt KB269495 KbMtel
Μηχανικά μεταφρασμένοΜηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:269495  (http://support.microsoft.com/kb/269495/en-us/ )
Retired KB ArticleΑποποίηση ευθυνών για περιεχόμενο της Γνωσιακής Βάσης (KB) που έχει αποσυρθεί
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.