寻找一种同步查找表数据的工具,而不仅仅是创建INSERT状态

时间:2016-08-03 15:29:52

标签: sql-server deployment sql-server-data-tools

我正在使用SSDT来创建数据填充脚本。 SSDT为表中的每一行创建一个INSERT语句。

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

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

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

3 个答案:

答案 0 :(得分:1)

使用sp_generate_merge生成您在部署后脚本中添加的脚本。

答案 1 :(得分:1)

如果您使用SSDT填充查找表,请不要使用单独的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;

答案 2 :(得分:0)

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