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 USING 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 כדי לתאר עדכוני תוכנה.