KB4502400 - ΕΠΙΔΙΟΡΘΩΣΗ: SQL Server 2014, 2016 και 2017 δεν εκτελούν τις απαιτούμενες αναθέσεις προ-γραμμής όταν χρησιμοποιείτε την πρόταση MERGE που εκτελεί αντιστοιχίσεις τοπικών μεταβλητών για κάθε γραμμή

Ισχύει για
SQL Server 2016 Service Pack 2 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 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)

Συμπτώματα

Ας υποθέσουμε ότι χρησιμοποιείτε την πρόταση MERGE για να μάθετε πόσες γραμμές δεν ταιριάζουν με βάση την προέλευση και αποθηκεύστε την σε μια τοπική μεταβλητή, ως εξής:

DECLARE
  @NotMatchedBySource INT = 0;

MERGE TargetTable ΧΡΗΣΗ SourceTable ON TargetTable.id = SourceTable.id
ΌΤΑΝ ΔΕΝ ΤΑΙΡΙΆΖΕΙ ΜΕ ΤΗΝ ΠΗΓΉ, ΤΌΤΕ
  UPDATE SET @NotMatchedBySource = @NotMatchedBySource + 1;

ΕΚΤΎΠΩΣΗ @NotMatchedBySource;
ΜΕΤΑΒΑΣΗ

Σε αυτή την περίπτωση, ενδέχεται να παρατηρήσετε ότι η τιμή του @NotMatchedBySource μετά την πρόταση MERGE ενδέχεται να μην αντικατοπτρίζει τον πραγματικό αριθμό των γραμμών που δεν ταιριάζουν με την προέλευση.

Κατάσταση

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

Επίλυση

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

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

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

Παραπομπές

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