KB4055758 - ΕΠΙΔΙΌΡΘΩΣΗ: Ασυνεπής συμπεριφορά για την επιστροφή τελικών κενών στο τέλος των δεδομένων CHAR και BINARY στο SQL Server

Ισχύει για
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) SQL Server 2016 Service Pack 1 SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows

Συμπτώματα

Ας υποθέσουμε ότι έχετε έναν πίνακα SQL Server της Microsoft που έχει ένα ή περισσότερα ευρετήρια ενσωματωμένα σε αυτόν. Όταν κάνετε ερώτημα σε σχέση με τον πίνακα, SQL Server μπορεί να εκτελέσει ασυνεπή αναπλήρωση δεδομένων για τις στήλες CHAR και BINARY. Η ασυνεπής συμπεριφορά για την επιστροφή τελικών κενών στο τέλος των στηλών δεδομένων CHAR και BINARY εξαρτάται από τις ακόλουθες συνθήκες:

  • Οι ρυθμίσεις του ANSI_PADDING όταν δημιουργούνται στήλες στον SQL Server πίνακα.
  • Η απόφαση για εκτέλεση σάρωσης πίνακα ή αναζήτησης ευρετηρίου στις στήλες.

Αιτία

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

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

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

Σημείωση

Εάν η ANSI_PADDING είναι ενεργοποιημένη όταν δημιουργείται μια στήλη char NULL, συμπεριφέρεται όπως και μια στήλη char NOT NULL: οι τιμές συμπληρώνονται με δεξί γέμισμα στο μέγεθος της στήλης. Εάν ANSI_PADDING είναι OFF όταν δημιουργείται μια στήλη char NULL, συμπεριφέρεται όπως μια στήλη varchar με ANSI_PADDING ρυθμισμένη ως απενεργοποιημένη: τα τελικά κενά περικόπτονται.

Επίλυση

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

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

Αθροιστική ενημερωμένη έκδοση 9 για SQL Server 2016

Αθροιστική ενημερωμένη έκδοση 6 για SQL Server 2016 SP1

Αθροιστική ενημερωμένη έκδοση 8 για SQL Server 2014 SP2

Αθροιστική ενημερωμένη έκδοση 7 για SQL Server 2014 SP1

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

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

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

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

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

Κατάσταση

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

Παραπομπές

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