有没有办法打印出完整的合并脚本输出?

问题描述

我使用多个合并脚本进行 CI/CD 部署数据库。 Dacpac 包含在 Azure Devops 部署 Azure DB 任务中使用的部署后脚本。 此脚本是多个合并脚本的串联。 我想以某种方式存储更新/删除/插入哪些记录的详细日志。 在 azure 发布日志中,我只有一个信息,即执行了更新脚本(在启用诊断之后)。

每个合并脚本都是这样的:

MERGE INTO [Common].[Address] AS Target
USING (VALUES 
    (N'00000009-0000-0000-0000-000000000001',N'Sample Street',N'Warsaw',N'15-123',N'Mazowieckie',N'Poland')
)
AS Source ([Id],[Street],[City],[PostalCode],[Voivodeship],[Country])
ON Target.[Id] = Source.[Id]

-- update matched rows
WHEN MATCHED AND (
    [Target].[Street] != Source.[Street] OR 
    [Target].[City] != Source.[City] OR
    [Target].[PostalCode] != Source.[PostalCode] OR
    [Target].[Voivodeship] != Source.[Voivodeship] OR 
    [Target].[Country] != Source.[Country]
) THEN
UPDATE SET 
    [Street] = Source.[Street],[City] = Source.[City],[PostalCode] = Source.[PostalCode],[Voivodeship] = Source.[Voivodeship],[Country] = Source.[Country]

-- insert new rows
WHEN NOT MATCHED BY TARGET THEN
INSERT ([Id],[Country])
VALUES (Source.[Id],Source.[Street],Source.[City],Source.[PostalCode],Source.[Voivodeship],Source.[Country])

OUTPUT $action,[deleted].*,[inserted].*;

输出中,我有我需要的确切信息。

我可以创建专用的临时表,列出所有需要的列,然后将输出插入到这个表中。然后我可以对整个行集使用 FOR JSON 子句,并将其保存到另一个只有两列的日志表中:时间戳和 json 数据,或者只是打印出来。该解决方案的问题是我有很多合并脚本,而且我不想为每一个创建专用表。有没有办法从 Output Clouse 初始化临时表?甚至直接将输出序列化为 JSON 格式的变量?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)