ASP επιστρέφει σφάλμα "Η λειτουργία πρέπει να χρησιμοποιήσετε ένα ερώτημα με δυνατότητα ενημέρωσης"

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

Συμπτώματα

Όταν χρησιμοποιείτε το ActiveX Data Objects (ADO) με ενεργών σελίδων διακομιστή (ASP), ενδέχεται να αντιμετωπίσετε το ακόλουθο σφάλμα κοινά:
Σφάλμα '80004005' υπηρεσίας παροχής Microsoft OLE DB για προγράμματα οδήγησης ODBC
[Microsoft][Η Microsoft Access 97 προγράμματος οδήγησης ODBC] Η λειτουργία πρέπει να χρησιμοποιήσετε ένα ερώτημα με δυνατότητα ενημέρωσης.

Αιτία

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

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

Αυτό το σφάλμα εντοπίζεται συνήθως όταν η δέσμη ενεργειών σας προσπαθεί να εκτελέσει ένα UPDATE ή κάποια άλλη ενέργεια που αλλάζει τις πληροφορίες της βάσης δεδομένων. Αυτό το σφάλμα παρουσιάζεται επειδή το ADO δεν είναι δυνατό να γράψει στη βάση δεδομένων για έναν από τους παρακάτω λόγους:

  1. Η συνηθέστερη αιτία είναι ότι ο λογαριασμός Internet Guest (IUSR_MACHINE), που είναι από προεπιλογή τμήμα της "" ομάδα Everyone, δεν έχει δικαιώματα εγγραφής στο αρχείο της βάσης δεδομένων (.mdb). Για να διορθώσετε αυτό το ζήτημα, χρησιμοποιήστε την καρτέλα Ασφάλεια του Explorer για να ρυθμίσετε τις ιδιότητες για αυτό το αρχείο, έτσι ώστε ο λογαριασμός Internet Guest έχει τα κατάλληλα δικαιώματα.

    ΣΗΜΕΙΩΣΗ: Όταν χρησιμοποιείτε βάσεις δεδομένων της Microsoft Access με το ADO, επίσης είναι απαραίτητο να δώσετε δικαιώματα εγγραφής στον κατάλογο που περιέχει το αρχείο .mdb στο λογαριασμό Guest στο Internet. Αυτό συμβαίνει επειδή το Jet δημιουργεί ένα αρχείο .ldb να χειριστεί το κλείδωμα της βάσης δεδομένων. Ίσως χρειαστεί να δώσετε δικαιώματα ανάγνωσης/εγγραφής στο φάκελο "Temp", επειδή το Jet ενδέχεται να δημιουργούν προσωρινά αρχεία σε αυτόν τον κατάλογο.
  2. Μια δεύτερη αιτία αυτού του σφάλματος είναι ότι η βάση δεδομένων δεν ανοίχτηκε με το σωστό MODE για εγγραφή. Εάν εκτελείτε το άνοιγμα του αντικειμένου Connection, μπορείτε να χρησιμοποιήσετε την ιδιότητα Mode για να υποδείξει τα δικαιώματα της σύνδεσης, όπως φαίνεται εδώ:
    
          SQL = "UPDATE Products Set UnitPrice = 2;"
          Set Conn = Server.CreateObject("ADODB.Connection")
          Conn.Mode = 3      '3 = adModeReadWrite
          Conn.Open "myDSN"
          Conn.Execute(SQL)
          Conn.Close
    
    						
    ΣΗΜΕΙΩΣΗ: Από προεπιλογή, ορίζεται το MODE 0(adModeUnknown), η οποία γενικά επιτρέπει ενημερώσεις.
  3. Μια άλλη αιτία αυτού του σφάλματος είναι ότι μπορεί να ελεγχθεί τη ρύθμιση "Μόνο για ανάγνωση" στη σελίδα "Επιλογές" για αυτήν τη διαχείριση ODBC DSN.
  4. Το τελευταίο θέμα και να αντιμετωπίσετε ισχύουν για οποιοδήποτε αρχείο προέλευσης δεδομένων SQL. Το σφάλμα μπορεί να οφείλεται σε προτάσεις SQL που παραβιάζει την ακεραιότητα αναφορών της βάσης δεδομένων. Ακολουθούν μερικά από τα πιο κοινά ερωτήματα που αποτυγχάνουν:
    • Το απλούστερο ομάδες για να χειριστείτε είναι αυτές που δεν μπορείτε να αλλάξετε: ερωτήματα ενέργειας διασταύρωσης, SQL διαβίβασης, συνένωσης, ή η ενημερωμένη έκδοση (ή δημιουργίας πίνακα) που έχουν UniqueValue ιδιότητες που έχουν οριστεί σε "Ναι".

    • Μια άλλη πολύ συνηθισμένη αιτία είναι όταν ο σύνδεσμος περιλαμβάνει συνδεδεμένους πίνακες ODBC που δεν έχουν μοναδικά ευρετήρια. Σε αυτήν την περίπτωση, δεν υπάρχει τρόπος για να εξασφαλίσετε ότι οι εγγραφές είναι μοναδικές σε έναν πίνακα που περιέχει πεδία των οποίων η τιμή θα αλλάξει με το ερώτημα SQL.

    • Μια αιτία έχει μια αξιόπιστη λύση. Εάν προσπαθήσετε να ενημερώσετε ένα πεδίο ένωσης από την πλευρά "ένα" ενός ερωτήματος "ένα-προς-πολλά" θα αποτύχει, εκτός εάν κάνετε ενεργοποίηση διαδοχικών ενημερώσεων. Με αυτόν τον τρόπο, αναθέσετε την ακεραιότητα αναφορών στο μηχανισμό JET.

Κατάσταση

Αυτή η συμπεριφορά οφείλεται στη σχεδίαση.

Ιδιότητες

Αναγν. άρθρου: 175168 - Τελευταία αναθεώρηση: Σάββατο, 18 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Active Server Pages 4.0
  • Microsoft Internet Information Services 5.0
  • Microsoft ActiveX Data Objects 2.7
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
Λέξεις-κλειδιά: 
kbdatabase kberrmsg kbprb kbmt KB175168 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:175168

Αποστολή σχολίων

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com