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

问题描述 投票:-1回答:3

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

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

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

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

sql-server deployment sql-server-data-tools
3个回答
1
投票

使用sp_generate_merge生成放置在部署后脚本中的脚本。


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;

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.