寻找一种同步查找 table 数据的工具,而不是仅仅创建 INSERT 语句

Looking for a tool that Sync lookup table data as opposed with just creating INSERT statemenents

我正在使用 SSDT 创建数据填充脚本。 SSDT 在 table.

中的每一行创建一个 INSERT 语句

问题是一些查找数据行已经存在于目标数据库中。因此 INSERT 语句会产生 PK 违规错误。

此外,有些行需要更新,而不是 INSERT。

是否有任何工具(希望是免费的)允许我同步(或合并)查找数据。如果没有该工具,我的数据填充脚本将非常具有挑战性和耗时。

SQL RedGate 的数据比较是其中之一,可免费试用 30 天。您可以使用 GUI ad-hoc 或命令行界面来自动更新。该产品并非没有缺点,但它可能非常有用。

使用 sp_generate_merge 生成您放入 post-部署脚本中的脚本。

编辑

如果您使用 SSDT 来填充查找 table,请不要使用单独的 INSERT、UPDATE 和 DELETE 语句,而是使用 MERGE:

merge into dbo.Colors as target 
using (
    values 

    --  Id  ,   Code        ,   Name                                

    (   1   ,   'RED'       ,   N'Red'      ),
    (   2   ,   'YELLOW'    ,   N'Yellow'   ),
    (   3   ,   'GREEN'     ,   N'Green'    ),  
    (   4   ,   'BLUE'      ,   N'Blue'     )           

)   as source (Id, Code, Name) on target.Id = source.Id

when matched then 
    update set 
        Code = source.Code  ,
        Name = source.Name  

when not matched by target then 
    insert (Id, Code, Name) 
    values (Id, Code, Name) 

when not matched by source then 
    delete;