Проблема
Предположим, что вы используете инструкцию MERGE, чтобы узнать, сколько строк не соответствует источнику, и сохранить его в локальной переменной следующим образом:
DECLARE
@NotMatchedBySource INT = 0;
MERGE TargetTable USING SourceTable ON TargetTable.id = SourceTable.id
ЕСЛИ НЕ СООТВЕТСТВУЕТ ИСТОЧНИКУ, ТО
UPDATE SET @NotMatchedBySource = @NotMatchedBySource + 1;
ПЕЧАТЬ @NotMatchedBySource;
ПОЙТИ
В этой ситуации можно заметить, что значение @NotMatchedBySource после инструкции MERGE может не отражать фактическое количество строк, которые не соответствуют источнику.
Состояние
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».
Решение
Эта проблема устранена в следующих накопительных обновлениях для SQL Server
Накопительный пакет обновления 7 для SQL Server 2016 с пакетом обновления 2 (SP2)
Накопительный пакет обновления 4 для SQL Server 2014 с пакетом обновления 3 (SP3)
Сведения о накопительных обновлениях для SQL Server:
Каждое новое накопительное обновление для SQL Server содержит все исправления и все исправления для системы безопасности, которые были включены в предыдущее накопительное обновление. Ознакомьтесь с последними накопительными обновлениями для SQL Server:
- Последнее накопительное обновление за SQL Server 2017 г.
- Последнее накопительное обновление для SQL Server 2016 г.
- Последнее накопительное обновление для SQL Server 2014 г.
Ссылки
Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.