KB4054398 - ΕΠΙΔΙΌΡΘΩΣΗ: Ο ισχυρισμός λιανικής πώλησης "Μη έγκυρη σύγκριση λόγω NO COLLATION" παρουσιάζεται το SQL Server 2014, 2016 και 2017

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

Συμπτώματα

Ας υποθέσουμε ότι έχετε ένα ερώτημα που εκτελεί ορισμένες λειτουργίες συμβολοσειράς, για παράδειγμα, συνένωση, σε στήλες CHAR ή VARCHAR στο Microsoft SQL Server 2014, 2016 και 2017. Εξετάστε το ακόλουθο σενάριο:

  • Μπορείτε να συνενώσετε στήλες με διαφορετικές συρραφές που έχουν αντιστοιχιστεί σε αυτές.
  • Οι αντιπαραβολές αυτές είναι ασύμβατες μεταξύ τους. Για παράδειγμα, προσπαθείτε να συνενώσετε μια στήλη που έχει συρραφεί ως Latin1_General_CI_AI με Latin1_General_BIN.
  • Το τελικό αποτέλεσμα της συνένωσης εκχωρείται σε μια συγκεκριμένη συρραφή (συμπεριλαμβανομένου του "database_default") ως θέμα επίλυσης της διένεξης συρραφής.

Σε αυτό το σενάριο, SQL Server ενδέχεται να επιστρέψει έναν ισχυρισμό λιανικής πώλησης που αναφέρει "Μη έγκυρη σύγκριση λόγω ΧΩΡΙΣ ΣΥΡΡΑΦΗ" και ενδέχεται να λάβετε ορισμένα μηνύματα λάθους παρόμοια με τα εξής:

Σημείωση

  • Τοποθεσία: typinfo.cpp:LineNumber
    Παράσταση: false
    SPID: SPID
    Αναγνωριστικό διεργασίας: ProcessID
    Περιγραφή: Μη έγκυρη σύγκριση λόγω ΧΩΡΙΣ ΣΥΡΡΑΦΗ.

  • Msg 3624, Επίπεδο 20, Κατάσταση 1, Αριθμός γραμμής
    Απέτυχε ένας έλεγχος διεκδίκησης συστήματος. Ελέγξτε το SQL Server αρχείο καταγραφής σφαλμάτων για λεπτομέρειες. Συνήθως, μια αποτυχία διεκδίκησης προκαλείται από ένα σφάλμα λογισμικού ή καταστροφή δεδομένων. Για να ελέγξετε για καταστροφή βάσης δεδομένων, εξετάστε το ενδεχόμενο να εκτελέσετε DBCC CHECKDB. Εάν συμφωνήσατε να αποστέλλονται αντίγραφα στη Microsoft κατά τη διάρκεια της εγκατάστασης, θα αποστέλλεται μια μικρή ένδειξη σφαλμάτων στη Microsoft. Ενδέχεται να είναι διαθέσιμη μια ενημερωμένη έκδοση από τη Microsoft στο πιο πρόσφατο Service Pack ή σε μια επείγουσα επιδιόρθωση από την τεχνική υποστήριξη.

  • Msg 596, Επίπεδο 21, Κατάσταση 1, LineNumber
    Δεν είναι δυνατή η συνέχιση της εκτέλεσης, επειδή η περίοδος λειτουργίας βρίσκεται σε κατάσταση τερματισμού.

  • Msg 0, Επίπεδο 20, Κατάσταση 0, Line LineNumber

  • Παρουσιάστηκε σοβαρό σφάλμα στην τρέχουσα εντολή.  Τα αποτελέσματα, εάν υπάρχουν, θα πρέπει να απορρίπτονται.

Αιτία

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

Επίλυση

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

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

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

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

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

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

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

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

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

Κατάσταση

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

Παραπομπές

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