Συμπτώματα
Μπορείτε να αλλάξετε τον τύπο δεδομένων μιας στήλης σε έναν πίνακα βάσης δεδομένων από το ntext στο nvarchar (max) σε ένα διακομιστή που εκτελεί τον Microsoft SQL Server 2012, 2014 ή 2016. Όταν ενημερώνετε τον πίνακα προσθέτοντας περισσότερες από 4.000 εγγραφές, η εντολή DBCC CHECKDB ενδέχεται να αναφέρει σφάλματα που μοιάζουν με τα εξής:
MSG 8961, επίπεδο 16, κατάσταση 1, LineNumber Σφάλμα πίνακα: ObjectId, indexID, ΑναγνωριστικόΔιαμερίσματος, allocUnitID (Πληκτρολογήστε δεδομένα LOB). Ο κόμβος δεδομένων εκτός γραμμής στη σελίδα (PageID), η υποδοχή 0, η textID δεν συμφωνεί με την αναφορά του από τη σελίδα (PageID), την υποδοχή 0. MSG 8961, επίπεδο 16, κατάσταση 1, LineNumber Σφάλμα πίνακα: ObjectId, indexID, ΑναγνωριστικόΔιαμερίσματος, allocUnitID (Πληκτρολογήστε δεδομένα LOB). Ο κόμβος δεδομένων εκτός γραμμής στη σελίδα (PageID), η υποδοχή 0, η textID δεν συμφωνεί με την αναφορά του από τη σελίδα (PageID), την υποδοχή 0. MSG 8929, επίπεδο 16, κατάσταση 1, LineNumberObjectId, indexID, ΑναγνωριστικόΔιαμερίσματος, AllocUnitID (πληκτρολογήστε τα δεδομένα σε σειρά): σφάλματα που βρέθηκαν σε δεδομένα εκτός γραμμής με Αναγνωριστικό που ανήκει σε εγγραφή δεδομένων που προσδιορίζεται από RID = (RID) Τα αποτελέσματα DBCC για το 'TableName'. Υπάρχουν 1 γραμμές σε 1 σελίδες για το αντικείμενο "TableName". Το CHECKTABLE εντόπισε 0 σφάλματα εκχώρησης και 3 σφάλματα συνέπειας στον πίνακα "TableName" (ObjectId). repair_allow_data_loss είναι το ελάχιστο επίπεδο επιδιόρθωσης για τα σφάλματα που εντοπίστηκαν από την DBCC CHECKTABLE (όνομαβάσηςδεδομένων. TableName). Η εκτέλεση DBCC ολοκληρώθηκε. Εάν τα μηνύματα σφάλματος που εκτυπώνονται DBCC, επικοινωνήστε με το διαχειριστή του συστήματός σας.
Επίλυση
Αυτό το ζήτημα διορθώνεται με τις ακόλουθες αθροιστικές ενημερώσεις για τον SQL Server:
Αθροιστική ενημερωμένη έκδοση 5 για SQL Server 2016 RTM
Αθροιστική ενημερωμένη έκδοση 2 για τον SQL Server 2016 SP1
Αθροιστική ενημερωμένη έκδοση 4 για τον SQL Server 2014 SP2
Αθροιστική ενημερωμένη έκδοση 11 για τον SQL Server 2014 SP1
Αθροιστική ενημερωμένη έκδοση 7 για τον SQL Server 2012 Service Pack 3
Κάθε νέα αθροιστική ενημέρωση για τον SQL Server περιέχει όλες τις επείγουσες επιδιορθώσεις και τις επιδιορθώσεις ασφαλείας που συμπεριλήφθηκαν στην προηγούμενη αθροιστική ενημέρωση. Ανάληψη ελέγχου των πιο πρόσφατων αθροιστικών ενημερώσεων για τον SQL Server:
Η πιο πρόσφατη αθροιστική ενημέρωση για τον SQL Server 2016
Η πιο πρόσφατη αθροιστική ενημέρωση για τον SQL Server 2014
Η πιο πρόσφατη αθροιστική ενημέρωση για τον SQL Server 2012 SP3
Λύση
Για να επιλύσετε αυτό το ζήτημα μετά την αλλαγή του τύπου δεδομένων, ορίστε την επιλογή τύποι μεγάλων τιμών εκτός γραμμής σε 1.
ALTER TABLE TableName ALTER COLUMN COLUMN_NAME nvarchar(max) NOT NULL
go
exec sp_tableoption 'TableName', 'large value types out of row', '1'
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα στα προϊόντα της Microsoft που παρατίθενται στην ενότητα "ισχύει για".
Αναφορές
Μάθετε σχετικά με την ορολογία που χρησιμοποιεί η Microsoft για την περιγραφή ενημερώσεων λογισμικού.