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;

PRINT @NotMatchedBySource;
이동

이 경우 MERGE 문 이후의 @NotMatchedBySource 값이 원본과 일치하지 않는 실제 행 수를 반영하지 않을 수 있습니다.

상태

Microsoft에서 이는 "적용 대상" 섹션에 나열된 Microsoft 제품에서의 문제임을 확인했습니다.

해결 방법

이 문제는 SQL Server 대한 다음 누적 업데이트에서 해결되었습니다.

SQL Server 대한 누적 업데이트 정보:

SQL Server 대한 각각의 새로운 누적 업데이트에는 이전 누적 업데이트에 포함된 모든 핫픽스 및 모든 보안 수정 사항이 포함됩니다. SQL Server 대한 최신 누적 업데이트를 확인하세요.

참조 자료

Microsoft에서 소프트웨어 업데이트를 설명하는 데 사용하는 용어에 대해 알아보세요.