Συμπτώματα
Ας υποθέσουμε ότι έχετε έναν πίνακα που έχει ένα ευρετήριο συμπλέγματος columnstore στο Microsoft SQL Server 2014. Μπορείτε να εκτελέσετε ένα ερώτημα DDL στον πίνακα για να αλλάξετε τον τύπο δεδομένων μιας υπάρχουσας στήλης. Για παράδειγμα, μπορείτε να ενημερώσετε τον τύπο δεδομένων για Column_1 Table_1 από VARCHAR (499) σε NVARCHAR (500), εκτελώντας την ακόλουθη εντολή:
ALTER TABLE Table_1 ALTER COLUMN Column_1 NVARCHAR(500) NOT NULL
Σε αυτήν την περίπτωση, προκύπτουν πολλές αποτυχίες διεκδίκησης και λαμβάνετε το ακόλουθο μήνυμα λάθους:
Σημείωση
Τοποθεσία: <Διαδρομή> αρχείου\xmcolenc.inl:413
Παράσταση: PF_CURRENT_STATUS == PFS_OK
(σε XMColumnEncoder<unsigned char *>::EncodeValueForSecondary)
SPID: <SPID>
Αναγνωριστικό διεργασίας: <Αναγνωριστικό διεργασίας>
Περιγραφή: hr: 0x0
Θέση: <Διαδρομή> αρχείου\xmerror.cpp:43
Παράσταση: 0
(στο PFSetLastError)
SPID: <SPID>
Αναγνωριστικό διεργασίας: <Αναγνωριστικό διεργασίας>
Περιγραφή: hr: 0x0
Επιπλέον, δημιουργούνται πολλά αρχεία ένδειξης σφαλμάτων μνήμης στο φάκελο SQL Server αρχείου καταγραφής σφαλμάτων και πολλά μηνύματα λάθους παρόμοια με τα ακόλουθα καταγράφονται στο αρχείο καταγραφής σφαλμάτων του SQL Server:
Σημείωση
<
Ημερομηνία/Ώρα> spid<ID> ***Ένδειξη στοίβας που αποστέλλεται στο <όνομα δίσκου>: \Program Files\Microsoft SQL Server\MSSQL12.SQL2014\MSSQL\LOG\SQLDump0002.txt
<
Ημερομηνία/Ώρα> spid<ID> * *******************************************************************************
<
Ημερομηνία/Ώρα> spid<ID*>
<
Ημερομηνία/Ώρα> SPID<ID* BEGIN STACK> DUMP:
<
Ημερομηνία/Ώρα> spid<ID*><Ημερομηνία Ώρα spid><ID>
<
Ημερομηνία/Ώρα> spid<ID*> Ιδιωτική δόμηση διακομιστή.
<
Ημερομηνία/Ώρα> spid<ID*>
<
Ημερομηνία/Ώρα> spid<ID*> Τοποθεσία: <File Path>\xmcolenc.inl:413
<
Ημερομηνία/Ώρα> spid<ID>* Παράσταση: PF_CURRENT_STATUS == PFS_OK
<
Ημερομηνία/Ώρα> spid<ID*> (στονμη υπογεγραμμένο χαρακτήρα XMColumnEncoder< *>::EncodeValueForSecondary)
<
Ημερομηνία/Ώρα> spid<ID*> SPID: 60
<
Ημερομηνία/Ώρα> spid<ID*> Αναγνωριστικό διεργασίας: 3680
<
Ημερομηνία/Ώρα> spid<ID*> Περιγραφή: hr: 0x0
<
Ημερομηνία/Ώρα> spid<ID*>
<
Ημερομηνία/Ώρα> spid<ID>* Buffer εισόδου 136 byte -
<
Ημερομηνία/Ώρα> spid<ID>* ALTER TABLE Table_1 ALTER COLUMN COL1 NVARCHAR(500) NOT NULL;
Επίλυση
Μετά την εφαρμογή αυτής της επείγουσας επιδιόρθωσης, ενδέχεται να λάβετε το ακόλουθο νέο μήνυμα λάθους όταν αποτύχει το ερώτημα DDL:
Σημείωση
Η πρόταση ALTER TABLE απέτυχε επειδή ένα δευτερεύον λεξικό έφτασε στο μέγιστο όριο μεγέθους. Εξετάστε το ενδεχόμενο να απορρίψετε το ευρετήριο columnstore, να τροποποιήσετε τη στήλη και, στη συνέχεια, να δημιουργήσετε ένα νέο ευρετήριο columnstore
Αυτή η επιδιόρθωση αποτρέπει επίσης τη δημιουργία αρχείων ένδειξης σφαλμάτων μνήμης στο αρχείο καταγραφής σφαλμάτων SQL Server.
Το πρόβλημα διορθώθηκε αρχικά στις ακόλουθες συγκεντρωτικές ενημερώσεις του SQL Server:
- Αθροιστική ενημερωμένη έκδοση 4 για SQL Server 2014 SP1
- Αθροιστική ενημερωμένη έκδοση 10 για SQL Server 2014
Σύσταση: Εγκαταστήστε την πιο πρόσφατη αθροιστική ενημερωμένη έκδοση για SQL Server
Κάθε νέα αθροιστική ενημερωμένη έκδοση για SQL Server περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις ενημερώσεις κώδικα ασφαλείας που συμπεριλήφθηκαν με την προηγούμενη αθροιστική ενημερωμένη έκδοση. Συνιστάται να κάνετε λήψη και εγκατάσταση των πιο πρόσφατων αθροιστικών ενημερώσεων για SQL Server:
- Τελευταία αθροιστική ενημερωμένη έκδοση για το SQL Server 2014 SP1
- Τελευταία αθροιστική ενημερωμένη έκδοση για το SQL Server 2014
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα ζήτημα που αφορά τα προϊόντα της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".