我创建的软件包是SSIS。第一次插入工作正常。当我通过SQL Server代理作业运行程序包时,在计划的作业插入数据时,我会插入重复的数据。
我对如何停止插入多个重复记录一无所知。
我希望在通过SQL Server作业运行已部署的程序包时删除重复项
答案 0 :(得分:2)
有两种方法可以做到这一点:
(1)使用SQL命令
如果源和目标位于同一服务器上,则可以使用此选项
由于使用的是ADO.NET源,因此可以将数据访问模式更改为 SQL命令,并仅选择目标中不存在的数据:
SELECT *
FROM SourceTable
WHERE NOT EXISTS(
SELECT 1
FROM DestinationTable
WHERE SourceTable.ID = DestinationColumn.ID)
(2)使用查找转换
您可以使用Lookup转换获取Source和Destination之间的不匹配行,并忽略重复项:
答案 1 :(得分:0)
为了删除重复项,请对以下查询使用SQL Task(假设您未提取数百万行,并且要删除提取的数据中的重复项,而不是目标):
with cte as (
select field1,field2, row_number() over(partition by allfieldsfromPK order by allfieldsfromPK) as rownum)
delete from cte where rownum > 1
然后使用数据流任务并将干净的数据插入目标表中。
如果只不想插入重复项,一个很好的选择是使用MERGE语句,这是一种性能更高的替代方法。