KB5007039 - ΔΙΟΡΘΩΣΗ: Αντιμετωπίζετε τα μηνύματα σφάλματος 8114 ή 22122 κατά την εκτέλεση εκκαθάρισης παρακολούθησης αλλαγών

Ισχύει για
SQL Server 2016 SQL Server 2017 on Linux SQL Server 2017 on Windows SQL Server 2016 Service Pack 3 - duplicate (do not use)

Συμπτώματα

Αφού εφαρμόσετε SQL Server 2016 Service Pack 3 (SP3) ή SQL Server 2017 αθροιστική ενημερωμένη έκδοση 26 (CU26) και εκτελέσετε μια παρακολούθηση αλλαγών εκκαθάριση αποθηκευμένη διαδικασία, sp_flush_commit_table_on_demand ή sp_flush_CT_internal_table_on_demand ή εάν εκτελείται η παρακολούθηση αλλαγών αυτόματη εκκαθάριση, λαμβάνετε το ακόλουθο μήνυμα λάθους:

Σημείωση

  • Msg 8114, Level 16, State 1, Procedure sp_add_ct_history, Line LineNumber
  • Error converting data type numeric to int.

Επιπλέον, ενδέχεται να καταγράφονται τα ακόλουθα σφάλματα στο αρχείο καταγραφής σφαλμάτων SQL Server:

Σημείωση

  • DateTime spidNum     Error: 22122, Severity: 16, State: 1.
  • DateTime spidNum Change Tracking autocleanup failed on side table of "table_name". Εάν η αποτυχία δεν επιλυθεί, χρησιμοποιήστε το sp_flush_CT_internal_table_on_demand για να εκκαθαρίσετε τις εγγραφές που έχουν λήξει από τον συνοδευτικό πίνακα.

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

Αιτία

SQL Server 2016 SP3 και SQL Server 2017 CU26 παρουσίασαν έναν νέο πίνακα, τον dbo. MSchange_tracking_history και μια νέα αποθηκευμένη διαδικασία sys.sp_add_ct_history, για να καταγράψετε το ιστορικό παρακολούθησης αλλαγών εκκαθάρισης. Αυτός ο πίνακας έχει μια στήλη cleanup_version, η οποία αυτήν τη στιγμή δηλώνεται ως τύπος δεδομένων INT. Η sys.sp_add_ct_history αποθηκευμένη διαδικασία έχει μια παράμετρο, @cleanup_version, που επίσης δηλώνεται ως INT. Σε ένα πολυάσχολο σύστημα που χρησιμοποιεί παρακολούθηση αλλαγών, η έκδοση εκκαθάρισης μπορεί να διασχίσει μια περιοχή INT σε ένα δεδομένο χρονικό διάστημα. Στη συνέχεια, όταν εκτελείται η εκκαθάριση παρακολούθησης αλλαγών, θα προσπαθήσει να εισαγάγει μια τιμή BIGINT στη στήλη INT αυτού του πίνακα. Αυτό δημιουργεί το σφάλμα που περιγράφεται στην ενότητα "Συμπτώματα".

Επίλυση

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

Αθροιστική ενημέρωση 27 για το SQL Server 2017

Πληροφορίες σχετικά με τις συγκεντρωτικές ενημερώσεις για SQL Server:

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

Τελευταία αθροιστική ενημέρωση για το SQL Server 2017

Πληροφορίες επείγουσας επιδιόρθωσης κατ' απαίτηση:

Αυτό το ζήτημα διορθώνεται στην ακόλουθη επείγουσα επιδιόρθωση κατ' απαίτηση για SQL Server:

Λύση

Εάν αντιμετωπίσετε αυτό το πρόβλημα, επαναφέρετε την προηγούμενη δομή καταργώντας την εγκατάσταση του SQL Server 2016 SP3 ή του SQL Server 2017 CU26. Η Microsoft διερευνά ενεργά αυτό το ζήτημα και θα ενημερώσει αυτό το άρθρο με περισσότερες πληροφορίες και πρόσθετη καθοδήγηση, όταν αυτές οι πληροφορίες γίνουν διαθέσιμες.

Κατάσταση

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

Παραπομπές

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