我正在使用SSDT来创建数据填充脚本。 SSDT为表中的每一行创建一个INSERT语句。
问题是目标数据库中已存在一些查找数据行。因此INSERT语句会生成PK违规错误。
此外,有些行需要更新,而不是INSERT。
是否有任何工具(希望是免费的)允许我同步(或合并)查找数据。如果没有这个工具,我的数据填充脚本将非常具有挑战性和耗时。
答案 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或命令行界面来自动更新。该产品并非没有缺点,但它非常有用。