KB3168793 - ΕΠΙΔΙΌΡΘΩΣΗ: Δεν είναι δυνατή η δημιουργία ή διαγραφή ενός πίνακα ή ευρετηρίου όταν εκτελείται μια άλλη συναλλαγή DDL στην ίδια βάση δεδομένων στο SQL Server 2016

Ισχύει για
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

Συμπτώματα

Όταν εκτελείτε τις λειτουργίες DDL, όπως δημιουργία ευρετηρίου ή περικοπή πίνακα στο SQL Server 2016, οι λειτουργίες ενδέχεται να αποκλειστούν εάν υπάρχει άλλη συναλλαγή DDL που εκτελείται στην ίδια βάση δεδομένων.

Επίλυση

Αυτό το πρόβλημα διορθώθηκε για πρώτη φορά στην ακόλουθη συγκεντρωτική ενημέρωση του SQL Server:

Σύσταση: Εγκαταστήστε την πιο πρόσφατη αθροιστική ενημερωμένη έκδοση για SQL Server

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

      

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

Όταν ένα DDL δημιουργεί ή διαγράφει έναν πίνακα ή ένα ευρετήριο, πρέπει να εισαγάγει ή να διαγράψει το αναγνωριστικό συνόλου γραμμών του πίνακα ή του ευρετηρίου από τα sysrowsets, για τα οποία πρέπει να κρατήσει πατημένο το κλείδωμα επιπέδου γραμμής X στην καταχώρηση. Όταν αυτό γίνει μέσα σε μια συναλλαγή, το κλείδωμα X θα διατηρηθεί για όλη τη διάρκεια της συναλλαγής.

Όταν το Tuple Mover ανακαλύψει buffers διαγραφής με δυνατότητα έκπλυσης, πρέπει να επαναληφθεί σε sysrowsets για να ανακαλύψει υπάρχοντες πίνακες ή ευρετήρια. Για να διαβάσει κάθε σειρά από sysrowsets, πρέπει να κρατήσει πατημένο ένα επίπεδο γραμμής S lock στην καταχώρηση που διαβάζει τη συγκεκριμένη στιγμή. Η διαδικασία εντοπισμού σταματά όταν η Tuple Mover βρει την πρώτη ομάδα γραμμών στην οποία μπορεί να εργαστεί. Σε αυτό το σημείο, ο Tuple Mover θα κάνει την πραγματική δουλειά της έκπλυσης του buffer διαγραφής, αλλά για να βεβαιωθεί ότι το σύνολο σειρών που ανακαλύφθηκε εξακολουθεί να ισχύει, θα κρατήσει ένα κλείδωμα SCH-S σε όλα τα σύνολα σειρών που αξιολόγησε κατά τη διαδικασία εντοπισμού μέχρι να ολοκληρώσει την εργασία του.

Το Sysrowsets ταξινομείται από το αναγνωριστικό rowset, επομένως μπορεί να συμβεί ότι το Tuple Mover σάρωσε πολλά υπάρχοντα rowsets στα οποία δεν έχει καμία ενέργεια να κάνει, αλλά θα εξακολουθεί να κρατά το κλείδωμα SCH-S και φτάνει σε μια καταχώρηση στο sysrowsets για την οποία δεν μπορεί να αποκτήσει κλείδωμα επιπέδου γραμμής S, επειδή επί του παρόντος μεταβάλλεται από μια μακροχρόνια συναλλαγή που κρατά ένα X lock στη σειρά. Σε αυτό το σημείο, τα DDL που περιλαμβάνουν αλλαγή αναγνωριστικού συνόλου γραμμών αποκλείονται πίσω από τις κλειδαριές SCH-S του Tuple Mover.

Κατάσταση

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

Παραπομπές

Ενημερωθείτε για την ορολογία που χρησιμοποιεί η Microsoft για να περιγράφει τις ενημερώσεις λογισμικού.