Você pode especificar uma cláusula OUTPUT em sua instrução MERGE e obter um relatório de saída do que foi feito durante o MERGE.
MERGE (targetTable) AS t
USING (sourceTable) AS s
ON t.ID = s.ID
WHEN MATCHED THEN
(some statements)
WHEN NOT MATCHED THEN
(some statements)
OUTPUT
$action, inserted.ID 'inserted', deleted.ID 'deleted'
;
Isso lhe dará uma linha para cada "ação" (inserir, atualizar, excluir) para cada operação. Se for um monte de instruções, você também pode OUTPUT INTO @tableVar e então olhar para a variável da tabela.
DECLARE @tableVar TABLE (MergeAction VARCHAR(20), InsertedID INT, DeletedID INT)
MERGE (targetTable) AS t
USING (sourceTable) AS s
ON t.ID = s.ID
WHEN MATCHED THEN
(some statements)
WHEN NOT MATCHED THEN
(some statements)
OUTPUT
$action, inserted.ID 'inserted', deleted.ID 'deleted' INTO @tableVar
;
SELECT MergeAction, COUNT(*)
FROM @tableVar
GROUP BY MergeAction
Confira os Manuais Online para obter detalhes sobre o MERGE e a cláusula OUTPUT .
Marco