ΕΠΙΔΙΌΡΘΩΣΗ: Ερώτημα με επίπεδο απομόνωσης συναλλαγής, ορισμός για ΑΝΆΓΝΩΣΗ οι αποτυγχάνει με σφάλμα 601

ΣΦΆΛΜΑ #: 363988 (SHILOH_BUGS)

Συμπτώματα

Όταν εκτελείται ένα ερώτημα με το επίπεδο απομόνωσης συναλλαγής ορισμός για να ΔΙΑΒΆΣΕΤΕ για μη ΟΛΟΚΛΗΡΩΜΈΝΕΣ, SQL Server 2000 ματαιώνει το ερώτημα και εμφανίζει το εξής μήνυμα λάθους:

Διακομιστής: Μήνυμα λάθους 601, 12 επίπεδο, στάδιο 3, γραμμή 14
Δεν ήταν δυνατή η συνέχιση σάρωσης με NOLOCK λόγω κυκλοφορία δεδομένων.

Αιτία

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

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

Πληροφορίες πακέτου υπηρεσιών

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

Πληροφορίες άμεσης επιδιόρθωσης

Η αγγλική έκδοση αυτής της άμεσης επιδιόρθωσης έχει τα χαρακτηριστικά αρχείου (ή νεότερα χαρακτηριστικά αρχείου) που παρατίθενται στον παρακάτω πίνακα. Οι ημερομηνίες και οι ώρες για τα αρχεία αυτά αναφέρονται σε Συντονισμένη παγκόσμια ώρα (UTC). Όταν προβάλλετε τις πληροφορίες του αρχείου, μετατρέπεται σε τοπική ώρα. Για να βρείτε τη διαφορά μεταξύ της ώρας UTC και της τοπικής ώρας, χρησιμοποιήστε την καρτέλα ζώνη ώρας στο εργαλείο "ημερομηνία και ώρα" στον πίνακα ελέγχου.
DateTimeVersionSize File name
-----------------------------------------------------------------------------

07-Feb-200316:14 786,432 bytes Distmdl.ldf
07-Feb-200316:142,359,296 bytes Distmdl.mdf
29-Jan-200312:25 180 bytes Drop_repl_hotfix.sql
31-Jan-200311:022000.80.763.01,557,052 bytes Dtsui.dll
29-Jan-200315:48 746,470 bytes Instdist.sql
29-Jan-200312:25 1,402 bytes Inst_repl_hotfix.sql
07-Feb-200317:102000.80.765.0 90,692 bytes Msgprox.dll
29-Jan-200311:487.0.9466.0 344,064 bytes Msvcr70.dll
29-Jan-200311:482000.80.722.0 57,904 bytes Osql.exe
07-Feb-200314:23 1,065,895 bytes Replmerg.sql
07-Feb-200317:102000.80.765.0 221,768 bytes Replprov.dll
07-Feb-200317:102000.80.765.0 307,784 bytes Replrec.dll
29-Jan-200315:48 1,084,318 bytes Replsys.sql
29-Jan-200311:482000.80.534.0 127,548 bytes Sqdedev.dll
07-Feb-200317:102000.80.765.0 176,696 bytes Sqlmap70.dll
07-Feb-200317:102000.80.765.0 57,920 bytes Sqlrepss.dll
14-Feb-200313:222000.80.769.0 7,512,145 bytes Sqlservr.exe
29-Jan-200311:482000.80.194.0 180,290 bytes Sqlunirl.dll
07-Feb-200317:102000.80.765.0 45,644 bytes Sqlvdi.dll
07-Feb-200317:102000.80.765.0 82,492 bytes Ssnetlib.dll

Σημείωση Εξαιτίας εξαρτήσεων αρχείων, η πιο πρόσφατη επείγουσα επιδιόρθωση ή δυνατότητα που περιέχει τα αρχεία ενδέχεται να περιέχουν πρόσθετα αρχεία.

Κατάσταση

Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα στα προϊόντα της Microsoft που παρατίθενται στην ενότητα "Ισχύει για". Το ζήτημα αυτό διορθώθηκε αρχικά στη Microsoft SQL Server 2000 Service Pack 4.

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

Μετά την εγκατάσταση της επείγουσας επιδιόρθωσης, μπορείτε να χρησιμοποιήσετε τη σημαία παρακολούθησης 9134 για να αλλάξετε τη συμπεριφορά του SQL Server. Για να ενεργοποιήσετε τη σημαία παρακολούθησης 9134 έτσι ώστε να είναι ενεργή κάθε φορά SQL Server ξεκινά, να προσθέσετε τη σημαία παρακολούθησης ως παράμετρο εκκίνησης του SQL Server. Για να προσθέσετε τη σημαία παρακολούθησης 9134 με την παράμετρο εκκίνησης του SQL Server, ακολουθήστε τα εξής βήματα:
  1. Στο SQL Server Enterprise Manager, κάντε δεξιό κλικ στο διακομιστή που εκτελεί τον SQL Server και, στη συνέχεια, κάντε κλικ στο κουμπί
    Ιδιότητες.
  2. Στην καρτέλα Γενικά , κάντε κλικ στο κουμπί Παράμετροι εκκίνησης.
  3. Στο πλαίσιο κειμένου την παράμετρο , πληκτρολογήστε
    -T9134, κάντε κλικ στο κουμπί Προσθήκηκαι, στη συνέχεια, κάντε κλικ στο κουμπί
    OK.
  4. Στο πλαίσιο διαλόγου Properties(Configure) διακομιστή SQL - <Όνομα διακομιστή> , κάντε κλικ στο κουμπί OK.
  5. Επανεκκινήστε την υπηρεσία SQL Server για τη νέα παράμετρο για να τεθούν σε ισχύ.
Ως εναλλακτική λύση, μπορείτε να εκτελέσετε το παρακάτω ερώτημα στο Query Analyzer για να ενεργοποιήσετε δυναμικά τη σημαία παρακολούθησης:
DBCC TRACEON (9134, -1)
Ωστόσο, εάν δεν προσθέσετε τη σημαία παρακολούθησης 9134 με την παράμετρο εκκίνησης, το αποτέλεσμα της εντολής DBCC TRACEON θα χαθεί όταν γίνει επανεκκίνηση της υπηρεσίας SQL Server.

Όταν είναι ενεργοποιημένη η σημαία παρακολούθησης 9134 και διαγράφεται ή τροποποιηθεί στο διάστημα μεταξύ του χρόνου SQL Server διαβάζει τη θέση της γραμμής και το χρόνο που λαμβάνει η γραμμή μέσω ενός σελιδοδείκτη αναζήτησης μιας γραμμής, το ερώτημα δεν θα ματαιώσει ή να επιστρέψει σφάλμα 601. Αντίθετα, SQL Server αγνοεί τη γραμμή που δεν μπορεί να εντοπιστεί και συνεχίζει να σαρώνει για πρόσθετες γραμμές που ικανοποιούν τα κριτήρια του ερωτήματος. Επομένως, συνεχίζεται η εκτέλεση του ερωτήματος Ωστόσο, τα αποτελέσματα που επιστρέφει ο διακομιστής SQL μπορεί να περιλαμβάνει γραμμές που έχουν διαγραφεί ή μετακινηθεί κατά την εκτέλεση του ερωτήματος.

Σημείωση Οι πληροφορίες σε αυτό το άρθρο και η παρακολούθηση σημαίας εφαρμόζονται μόνο σε ένα ερώτημα που εκτελείται με το επίπεδο απομόνωσης συναλλαγής ορισμός για να ΔΙΑΒΆΣΕΤΕ για μη ΟΛΟΚΛΗΡΩΜΈΝΕΣ. Οι πληροφορίες δεν ισχύει για ένα ερώτημα που εκτελείται με την υπόδειξη βελτιστοποιητή NOLOCK. Στην περίπτωση αυτή, η συμπεριφορά παραμένει αμετάβλητη από εκείνα που περιγράφονται στην ενότητα "Συμπτώματα".

Επίσης, η σημαία παρακολούθησης δεν επηρεάζει το γεγονός ότι άλλες ασυνέπειες σφάλματα και τα δεδομένα μπορεί να προκύψει κατά την ανάγνωση δεδομένων μη ολοκληρωμένες. Για περισσότερες πληροφορίες σχετικά με τα επίπεδα απομόνωσης που υποστηρίζονται από το SQL Server και το εφέ της χρήσης κάθε επίπεδο απομόνωσης, ανατρέξτε στο θέμα "Κλείδωμα" στα ηλεκτρονικά βιβλία του SQL Server.

Η Microsoft δεν συνιστά τη χρήση αυτής της σημαίας παρακολούθησης, εκτός αν ισχύουν τα εξής:
  • Η εφαρμογή χρησιμοποιείται απαιτεί μια ΑΝΆΓΝΩΣΗ οι επίπεδο απομόνωσης.
  • Η εφαρμογή χρησιμοποιείται αντιμετωπίζει ένα μεγάλο αριθμό 601 σφάλματα.
  • Κατανοείτε ότι όταν χρησιμοποιείτε τη σημαία παρακολούθησης, παραβλέπονται οι γραμμές που έχουν διαγραφεί ή μετακινηθεί κατά την εκτέλεση του ερωτήματος.
Σημείωση Μπορείτε να χρησιμοποιήσετε το επίπεδο απομόνωσης που ΔΙΑΒΆΖΟΥΝ οι, πρέπει να κατανοήσετε τη λειτουργικότητά του. Για περισσότερες πληροφορίες σχετικά με το επίπεδο απομόνωσης που ΔΙΑΒΆΖΟΥΝ οι, επισκεφθείτε την ακόλουθη τοποθεσία του Microsoft Developer Network (MSDN) στο Web:

Αναφορές

Για πρόσθετες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
235880 INF: υποδείξεων βελτιστοποιητή NOLOCK ή ΑΝΆΓΝΩΣΗ επίπεδο απομόνωσης UNCOMMITTED δημιουργεί σφάλμα 605
Για περισσότερες πληροφορίες, επισκεφθείτε τις ακόλουθες τοποθεσίες του MSDN στο Web:
Αντιμετώπιση προβλημάτων σφάλματος 601
http://msdn2.microsoft.com/en-us/library/aa258726(SQL.80).aspx
ΟΡΙΣΜΌΣ ΕΠΙΠΈΔΟΥ ΑΠΟΜΌΝΩΣΗΣ ΣΥΝΑΛΛΑΓΉΣ
http://msdn2.microsoft.com/en-us/library/aa259216(SQL.80).aspx
Ιδιότητες

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

Σχόλια