Applies ToSQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Συμπτώματα

Όταν χρησιμοποιείτε κατοπτρισμό βάσης δεδομένων στον Microsoft SQL Server 2012 ή στον Microsoft SQL Server 2014, ενδέχεται να πατήσετε μια συνθήκη διεκδίκησης και η δημιουργία ειδώλου βάσης δεδομένων εισέρχεται σε κατάσταση αναστολής.

Αιτία

Το πρόβλημα παρουσιάζεται επειδή, κατά την εκχώρηση μιας νέας σελίδας, ο SQL Server αποκτά ένα κλείδωμα X στη νέα σελίδα. Ο SQL Server θα τοποθετήσει το hobt_id (heap ή B-Tree ID) στο οποίο η νέα σελίδα ανήκει στην αίτηση κλειδώματος. Ωστόσο, ο SQL Server δεν μπορεί να τοποθετήσει το hobt_id σε κατοπτρισμό αρχείου καταγραφής και έχει ως αποτέλεσμα διαφορετική συμπεριφορά κλειδώματος μεταξύ του πρωτεύοντος και του ειδώλου. Αυτό μπορεί να εξηγηθεί λεπτομερώς ως εξής:

  1. T1 κρατήστε πατημένο ένα κλείδωμα IX στη σελίδα P1.

  2. T2 κάντε μια σελίδα διαιρεμένη στο P1, εκχωρήστε μια νέα σελίδα P2, μια συναλλαγή συστήματος TX χρησιμοποιείται εδώ, κρατάει ένα X Lock στο P2. Εδώ ο SQL Server δεν τοποθέτησε το hobt_id στο αρχείο καταγραφής κατοπτρισμού.

  3. Το TX κάνει μια μετεγκατάσταση κλειδώματος για το Τ1 για να μετακινήσει το κλείδωμα IX από το P1 στο P2.

  4. Δεσμευμένος TX, τώρα ο T2 μπορεί να χρησιμοποιήσει τη σελίδα P2 και το T2 να αποκτήσει ένα άλλο κλείδωμα IX στη σελίδα P2.

  5. Ο T1 έχει δεσμευτεί, τώρα ο T2 είναι ο μόνος που κατέχει ένα κλείδωμα IX στο P2.

  6. Μετά την τοποθέτηση πολλών τοποθετήσεων, εμφανίζεται μια κλιμάκωση κλειδώματος, στον πρωτεύοντα, ο T2 απελευθερώνει το ΙΧ στο P2, αλλά στον καθρέφτη, κατά τη διάρκεια της κλιμάκωσης κλειδώματος, το T2 δεν απελευθέρωσε το κλείδωμα IX.

  7. Μετά τη μεγάλη διαγραφή, η σελίδα P2 έγινε κενή και έχει αποδεσμευτεί.

  8. Το T3 χρειάζεται μια νέα σελίδα και συμβαίνει να εκχωρείται P2, αυτό απαιτεί κλείδωμα X, αλλά στο είδωλο, αυτό το βήμα απέτυχε λόγω του βήματος 6.

Στο είδωλο, το βήμα 6 δεν απελευθερώνει το κλείδωμα IX, επειδή το hobt_id στο μπλοκ κλειδώματος είναι εσφαλμένο. Αυτή η εσφαλμένη hobt_id έρχεται κατά τη διάρκεια του βήματος 2 και επειδή ο SQL Server δεν τοποθετεί το hobt_id στο αρχείο καταγραφής κατοπτρισμού. συνήθως δεν βλέπετε κανένα πρόβλημα, επειδή το TX στο βήμα 2 είναι πολύ σύντομο και το κλείδωμα μπλοκ με εσφαλμένο hobt_id θα κυκλοφορήσει όταν δεσμευτεί. Ωστόσο, εξαιτίας της μετεγκατάστασης κλειδώματος στο βήμα και τα παρακάτω βήματα (4 και 5), αυτό το μπλοκ κλειδώματος με εσφαλμένο hobt_id διατηρείται και, τέλος, προκαλεί το πρόβλημα. Το πρωτεύον δεν έχει αυτό το πρόβλημα, επειδή χρησιμοποιεί ένα σωστό hobt_id στο βήμα 2. Ωστόσο, η εγγραφή του αρχείου καταγραφής δεν έχει σωστές hobt_id.

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

Λύση

Για να επιλύσετε αυτό το πρόβλημα, προετοιμάστε ξανά το είδωλο για να τερματίσετε την κατάσταση αναστολής.

Κατάσταση

Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα στα προϊόντα της Microsoft που παρατίθενται στην ενότητα "ισχύει για".

Χρειάζεστε περισσότερη βοήθεια;

Θέλετε περισσότερες επιλογές;

Εξερευνήστε τα πλεονεκτήματα της συνδρομής, περιηγηθείτε σε εκπαιδευτικά σεμινάρια, μάθετε πώς μπορείτε να προστατεύσετε τη συσκευή σας και πολλά άλλα.

Οι κοινότητες σάς βοηθούν να κάνετε και να απαντάτε σε ερωτήσεις, να δίνετε σχόλια και να ακούτε από ειδικούς με πλούσια γνώση.