現象
MERGE ステートメントを使用してソースと一致しない行の数を調べ、次のようにローカル変数に格納するとします。
DECLARE
@NotMatchedBySource INT = 0;
MERGE TargetTable USING SourceTable ON TargetTable.id = SourceTable.id
ソースと一致しない場合は、
UPDATE SET @NotMatchedBySource = @NotMatchedBySource + 1;
印刷 @NotMatchedBySource;
GO
この場合、MERGE ステートメントの後の @NotMatchedBySource の値が、ソースによって一致しない実際の行数を反映していないことがあります。
状態
Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。
解決策
この問題は、次の SQL Server の累積的な更新プログラムで修正されています
SQL Server の累積的な更新プログラムについて:
SQL Server 用の新しい累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 SQL Server の最新の累積的な更新プログラムを確認してください。
参考資料
マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。