ΕΠΙΔΙΌΡΘΩΣΗ: Μερικά αποτελέσματα σε ένα ερώτημα από ένα ευρετήριο συμπλέγματος columnstore στο SQL Server 2014

ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο έχει μεταφραστεί χρησιμοποιώντας λογισμικό μηχανικής μετάφρασης της Microsoft και μπορείτε να το διορθώσετε χρησιμοποιώντας την τεχνολογία Community Translation Framework (CTF) (Πλαίσιο μετάφρασης κοινότητας). Η Microsoft παρέχει μηχανική μετάφραση, επεξεργασία μετά τη μηχανική μετάφραση από την κοινότητα και άρθρα μεταφρασμένα από επαγγελματίες προκειμένου να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής βάσης σε πολλές γλώσσες. Τα άρθρα μηχανικής μετάφρασης και αυτά που επεξεργάζονται ύστερα από μηχανική μετάφραση ενδέχεται να περιέχουν σφάλματα στο λεξιλόγιο, στη σύνταξη ή/και στη γραμματική. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες μας. Για περισσότερες πληροφορίες σχετικά με το CTF, μεταβείτε στην τοποθεσία http://support.microsoft.com/gp/machine-translation-corrections/el.

Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη: 3067257
Αυτό το άρθρο ασχολείται με ένα πρόβλημα που παρουσιάζεται κατά τη διάρκεια ενός ερωτήματος από ένα ευρετήριο συμπλέγματος columnstore στο Microsoft SQL Server 2014. Αυτό το άρθρο παρέχει ανάλυση σε αυτό το πρόβλημα.
Περίληψη
Όταν χρησιμοποιείτε ένα ερώτημα το οποίο σαρώνει ένα ευρετήριο συμπλέγματος columnstore στο Microsoft SQL Server 2014, μπορεί, υπό συνθήκες σπάνιες, λαμβάνετε αποτελέσματα ερωτήματος μερική.

Αυτό το ζήτημα παρουσιάζεται όταν εκτελείται η παρακάτω λειτουργία.
Βήμα 1
Μια πρόταση Transact-SQL [Εισαγωγή ή ΜΑΖΙΚΉΣ ΕΙΣΑΓΩΓΉΣ] εισάγει δεδομένα σε έναν πίνακα που έχει σε σύμπλεγμα columnstore ευρετήριο. Κατά τη διάρκεια αυτής της λειτουργίας, ισχύουν οι ακόλουθες συνθήκες:
  • Όταν η πρόταση Transact-SQL φτάσει το όριο ομάδα γραμμών, κλείνει ομάδα γραμμών R1 που έχει τμήμα S1.
  • Τμήμα σημεία S1 τοπικό λεξικό D1.
  • Συνεχίζει την πρόταση για την εισαγωγή γραμμών για τα νέα ομάδα γραμμών R2.
  • Όταν είναι κλειστή ομάδα γραμμών R1, το τοπικό λεξικό D1 δεν έχουν επίσης να κλείσει. Εάν το λεξικό D1 εξακολουθεί να έχει διαθέσιμο χώρο, μπορείτε να αφήσετε ανοιχτό και να το χρησιμοποιήσετε ξανά για τη νέα ομάδα γραμμών R2.
Βήμα 2
Εάν η πρόταση Transact-SQL είναι τελείωσε μη κανονικά ή να ακυρωθεί πριν κλείσει η νέα ομάδα γραμμών R2, ισχύουν οι ακόλουθες συνθήκες:
  • Προκύπτουν αλλαγές μετα-δεδομένων Columnstore σε subtransactions που ολοκλήρωσης ανεξάρτητα από την εξωτερική συναλλαγή.
  • Σε αυτό το σημείο, ομάδα γραμμών R1 παραμένει στον πίνακα συστήματος σε μια "υπό κατασκευή" ή ΑΌΡΑΤΑ κατάσταση και τμήμα S1 αναφέρεται σε λεξικό D1.
  • Δεν υπάρχει γραμμή δημιουργείται στον πίνακα συστήματος για το λεξικό D1. Αυτό συμβαίνει επειδή η πρόταση Transact-SQL έχει ποτέ μια ευκαιρία για να κλείσετε την υπάρχουσα γραμμή. Επομένως, η υπάρχουσα γραμμή παραμένει.
Βήμα 3
Σε μια τυπική κατάσταση, εάν η εργασία πλειάδα πρόγραμμα μετακίνησης στο παρασκήνιο ξεκινά μετά το τέλος της την Transact-SQL, η εργασία στο παρασκήνιο καταργεί το αόρατο ομάδα γραμμών R1 και το τμήμα S1. Εάν μια νέα πρόταση Transact-SQL ξεκινήσει τώρα και δημιουργεί ομάδα γραμμών R3 με ένα νέο τμήμα αγοράς S3 που απαιτεί ένα νέο τοπικό λεξικό, δεν μπορείτε να ξαναχρησιμοποιήσετε το εσωτερικό Αναγνωριστικό του λεξικού D1. Αυτό συμβαίνει επειδή το μέλος στη μνήμη της columnstore διατηρεί παρακολούθηση των το λεξικό ταυτότητες που χρησιμοποιούνται. Επομένως, το τμήμα S3 θα περιέχει αναφορές σε νέο λεξικό D2.

Σημείωση Η κατάσταση σε αυτό το βήμα είναι η κοινή κατάσταση. Κατά συνέπεια, προκύπτει χωρίς καταστροφή.
Βήμα 4
Εάν ο SQL Server χάνει την κατάσταση στη μνήμη του λεξικού D1 πριν την εργασία πρόγραμμα μετακίνησης πλειάδα τίθεται σε ισχύ (και εκτελεί όπως περιγράφεται στο βήμα 3), προκύπτει το ζήτημα που περιγράφεται σε αυτό το άρθρο.

Σημειώσεις
  • Αυτό το συμβάν παρουσιάζεται για οποιονδήποτε από τους παρακάτω λόγους:
    • SQL Server αντιμετωπίζει υπερφόρτωση μνήμης και τα περιεχόμενα της μνήμης του λεξικού D1 έχουν καταργηθεί από τη μνήμη.
    • Η παρουσία του SQL Server που θα επανεκκινηθεί.
    • Η βάση δεδομένων που περιέχει το ευρετήριο συμπλέγματος columnstore βγαίνει εκτός σύνδεσης και κατόπιν αποκατασταθεί στο Internet.
  • Μετά από ένα από αυτά τα συμβάντα προκύπτουν και SQL Server φορτώνει εκ νέου τις δομές στη μνήμη, δεν υπάρχει καμία εγγραφή που ένα λεξικό Δ1 και τους εσωτερικούς υπήρχε Αναγνωριστικό. Αυτό συμβαίνει επειδή το λεξικό D1 δεν διατηρήθηκε στους πίνακες του συστήματος κατά την Transact-SQL διακόπηκε ή conceled.
  • Εάν η εργασία πλειάδα πρόγραμμα μετακίνησης στο παρασκήνιο θα ξεκινήσει σε αυτό το σημείο, δεν παρουσιαστούν σφάλματα επειδή ισχύουν οι συνθήκες που περιγράφονται στο βήμα 3.
  • Αν έχει δημιουργηθεί μια νέα ομάδα γραμμών R3, πριν να ξεκινήσει η εργασία πλειάδα πρόγραμμα μετακίνησης στο παρασκήνιο (ανά στο προηγούμενο στοιχείο κουκκίδας), SQL Server, αντιστοιχίζει το ίδιο εσωτερικό Αναγνωριστικό νέο λεξικό Δ1 και αναφέρεται σε λεξικό Δ1 για το τμήμα S3 σε ομάδα γραμμών R3.
  • Όταν ξεκινήσει η εργασία πλειάδα πρόγραμμα μετακίνησης στο παρασκήνιο μετά την προηγούμενη ενέργεια, πέφτει αόρατο ομάδα γραμμών R1 και τα τμήματα S1 μαζί με το νέο λεξικό D1. Αυτό συμβαίνει επειδή το πρόγραμμα μετακίνησης πλειάδα θεωρεί το νέο λεξικό D1 και το αρχικό λεξικό D1 ότι αναφορές S1 είναι τα ίδια.

    Σημείωση Όταν συμβαίνει αυτή η κατάσταση, δεν μπορείτε να υποβάλετε ερώτημα τα περιεχόμενα του ομάδα γραμμών R3.
Προτεινόμενη αντιμετώπιση
Το πρόβλημα επιδιορθώθηκε για πρώτη φορά στις παρακάτω αθροιστικές ενημερωμένες εκδόσεις για τον SQL Server:


Η ενημέρωση κώδικα για αυτό το θέμα περιλαμβάνεται επίσης στην τις ακόλουθες ενημερωμένες εκδόσεις του γενικής διανομής (GDR) την έκδοση:

Ενημερωμένη έκδοση ασφαλείας για SQL Server 2014 QFE
Αυτή η ενημερωμένη έκδοση περιλαμβάνει την αθροιστική ενημερωμένη έκδοση 8, αυτή η σημαντική ενημέρωση κώδικα και τις απαιτούμενες ενημερωμένες εκδόσεις ασφαλείας MS15-058.

Ενημερωμένη έκδοση ασφαλείας για SQL Server 2014 GDR
Αυτή η ενημερωμένη έκδοση περιλαμβάνει αυτή η σημαντική ενημέρωση κώδικα και αθροιστικές ενημερώσεις κώδικα ασφαλείας μέσω MS15-058.

Ενημερωμένη έκδοση ασφαλείας για τον SQL Server 2014 Service Pack 1 GDR
Αυτή η ενημερωμένη έκδοση περιλαμβάνει μόνο αυτήν την ενημέρωση κώδικα σημαντικό.

Σχετικά με τις αθροιστικές ενημερωμένες εκδόσεις για τον SQL Server

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

Μηνύματα λάθους

Σε μια βάση δεδομένων που αυτήν τη στιγμή που έχει επηρεαστεί, εάν εκτελέσετε DBCC CHECKDB μετά την εφαρμογή αυτής της ενημέρωσης κώδικα, λάβετε ακόλουθο μήνυμα σφάλματος:
Msg 5289, επίπεδο 16, κατάσταση 1, γραμμή 1
Columnstore συγκεντρωτικό ευρετήριο 'ΚΠΕ' στον πίνακα ' π ' έχει μία ή περισσότερες τιμές δεδομένων που δεν ταιριάζουν με τις τιμές δεδομένων σε ένα λεξικό. Για να επαναφέρετε τα δεδομένα από ένα αντίγραφο ασφαλείας.

Σε βάση δεδομένων που επηρεάζεται αυτή τη στιγμή, όταν εκτελείτε ένα ερώτημα το οποίο σαρώνει τους πίνακες που επηρεάζονται, μετά την εφαρμογή αυτής της ενημέρωσης κώδικα, λαμβάνετε το ακόλουθο μήνυμα λάθους:
Msg 5288, επίπεδο 16, κατάσταση 1, γραμμή 1
Columnstore ευρετήριο έχει μία ή περισσότερες τιμές δεδομένων που δεν ταιριάζουν με τις τιμές δεδομένων σε ένα λεξικό. Για περισσότερες πληροφορίες, εκτελέστε DBCC CHECKDB.

Εάν λαμβάνετε αυτά τα σφάλματα, μπορείτε να αποθηκεύσετε τα δεδομένα μη κατεστραμμένο, μαζική εξαγωγή των δεδομένων της δεν επηρεάζεται στήλες/rowgroups και, στη συνέχεια, επαναφόρτωση των δεδομένων μετά την απόθεση ή δημιουργήστε το ευρετήριο συμπλέγματος columnstore. Θα πρέπει να ενεργοποιήσετε τη σημαία παρακολούθησης 10207 για να αποτρέψετε το σφάλμα 5288 και να επιστρέψετε στην παλιά συμπεριφορά της παράλειψη κατεστραμμένο rowgroups.

Σημείωση Μηνύματα λάθους 5288 και 5289 δημιουργούνται για αυτήν την ομάδα γραμμών R3 που έχει τμήμα S3. Σημαία παρακολούθησης 10207 χρησιμοποιείται για να εξαγάγετε τα τμήματα της ομάδα γραμμών R3 που δεν επηρεάζονται από το λεξικό λείπουν D1.

Ερώτημα για τις βάσεις δεδομένων που έχουν επηρεαστεί

Για να προσδιορίσετε αν η βάση δεδομένων που περιέχει columnstore ευρετήρια επηρεάζεται ήδη από αυτό το ζήτημα, εκτελέστε το ακόλουθο ερώτημα:
select         object_name(i.object_id) as table_name,        i.name as index_name,        p.partition_number,        count(distinct s.segment_id) as damaged_rowgroups from        sys.indexes i        join sys.partitions p on p.object_id = i.object_id and p.index_id = i.index_id        join sys.column_store_row_groups g on g.object_id = i.object_id and g.index_id = i.index_id and g.partition_number = p.partition_number        join sys.column_store_segments s on s.partition_id = p.partition_id and s.segment_id = g.row_group_id where         i.type in (5, 6)        and s.secondary_dictionary_id <> -1         and g.state_description = 'COMPRESSED'        and s.secondary_dictionary_id not in        (               select dictionary_id from sys.column_store_dictionaries d               where d.hobt_id = p.hobt_id and d.column_id = s.column_id        ) group by         object_name(i.object_id),        i.name,        p.partition_number 

Σημειώσεις
  • Πρέπει να εκτελέσετε αυτό το ερώτημα σε κάθε βάση δεδομένων που περιέχει columnstore ευρετήρια στο διακομιστή που εκτελεί τον SQL Server. Ένα σύνολο αποτελεσμάτων κενό δηλώνει ότι η βάση δεδομένων δεν επηρεάζονται.
  • Εκτέλεση αυτού του ερωτήματος κατά τη διάρκεια μιας περιόδου όταν δεν υπάρχει καμία δραστηριότητα που θα δημιουργήσετε νέα rowgroups ή να αλλάξετε την κατάσταση του υπάρχοντος rowgroups. Για παράδειγμα, οι ακόλουθες δραστηριότητες μπορεί να τροποποιήσει την κατάσταση του rowgroups: δημιουργία ευρετηρίου, αναδιοργανώσετε ευρετηρίου, μαζική εισαγωγή, μετακίνηση πλειάδα συμπίεση καταστήματα δέλτα.

    Πριν εκτελέσετε το ερώτημα, μπορείτε να απενεργοποιήσετε την εργασία στο παρασκήνιο πλειάδα πρόγραμμα μετακίνησης χρησιμοποιώντας τη σημαία παρακολούθησης 634. Χρησιμοποιήστε αυτήν την εντολή για να απενεργοποιήσετε την εργασία στο παρασκήνιο: TRACEON DBCC (634, -1). Μετά το ερώτημα εκτελείται, μην ξεχάσετε να ενεργοποιήσετε ξανά την εργασία στο παρασκήνιο, χρησιμοποιώντας την εντολή: TRACEOFF DBCC (634, -1).

    Επίσης βεβαιωθείτε ότι δεν υπάρχουν ΜΑΖΙΚΉΣ ΕΙΣΑΓΩΓΉΣ/BCP/ΕΠΙΛΟΓΉ-σε εντολές εισαγωγή δεδομένων στους πίνακες που χρησιμοποιούν columnstore ευρετηρίου ενώ εκτελείται αυτό το ερώτημα.

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

Προειδοποίηση: Αυτό το άρθρο έχει μεταφραστεί αυτόματα

Ιδιότητες

Αναγνωριστικό άρθρου: 3067257 - Τελευταία αναθεώρηση: 07/22/2015 17:39:00 - Αναθεώρηση: 3.0

Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbsurveynew kbexpertiseadvanced kbfix kbmt KB3067257 KbMtel
Σχόλια