为什么当我第二次在Visual Studio 2013中执行我的ssis包时,我在OLE DB目标中遇到了一个问题,告诉我我的sql服务器中已经有了这些数据。所以我该怎么做 !!我希望,当我第二次执行它时,我的ssis能够识别我的数据并且不会导致问题并正常执行。 从Visual Studio SSIS包执行
-1
A
回答
2
在你的情况,我建议你创建一个TRSF表像下面的代码:在你的包在第一
CREATE TABLE dbo.TRFS_TD_Titles
(
Title_ID varchar(50),
Title varchar(500),
[Type] varchar(500)
)
然后IIN您ControlFlow
你应该在这个清除所有记录运行命令在您的DataFlow task
之前的表。
您需要在的DataFlow task
之前加上Execute SQL Task
。
然后通过运行此命令你Execute SQL Task
:
Truncate Table dbo.TRFS_TD_Titles
然后在你的DataFlow
你只需要更改目标表中的最后一个组件(OLE DB目标)(在你的包它命名为TD标题) 。您必须将所有行转移到dbo.TRFS_TD_Titles
。
然后在你ControlFlow
,添加第二个Execute SQL Task
您DataFlow
后并运行此命令:
MERGE dbo.TD_Titles AS T
USING dbo.TRFS_TD_Titles AS S
ON T.Title_ID = S.Title_ID
WHEN MATCHED THEN
UPDATE
SET
T.Title = S.Title,
T.Type = S.type
WHEN NOT MATCHED BY TARGET THEN
INSERT
(Title_ID,Title,[Type])
VALUES
(S.Title_ID,S.Title,S.[Type])
WHEN NOT MATCHED BY SOURCE THEN
DELETE
;
如果你不需要从你的目标表中删除记录(dbo.TD_Titles),你应该只在你的第二个Execute SQL Task
运行此命令:
MERGE dbo.TD_Titles AS T
USING dbo.TRFS_TD_Titles AS S
ON T.Title_ID = S.Title_ID
WHEN MATCHED THEN
UPDATE
SET
T.Title = S.Title,
T.Type = S.type
WHEN NOT MATCHED BY TARGET THEN
INSERT
(Title_ID,Title,[Type])
VALUES
(S.Title_ID,S.Title,S.[Type]);
而且如果你不需要在你的目的地,以更新现有行(dbo.TD_Titles)你只需要在你的第二个Execute SQL Task
运行此命令:
MERGE dbo.TD_Titles AS T
USING dbo.TRFS_TD_Titles AS S
ON T.Title_ID = S.Title_ID
WHEN NOT MATCHED BY TARGET THEN
INSERT
(Title_ID,Title,[Type])
VALUES
(S.Title_ID,S.Title,S.[Type]);
你将有一个ControlFlow这样的形象:
+0
谢谢你的工作 –
相关问题
- 1. 在VIsual Studio 2013中执行SSIS包时看不到行数
- 2. Visual Studio的SSIS包存储
- 3. 从c#执行SSIS包#
- 4. 执行SSIS包
- 5. 错误执行SSIS包
- 6. 不能从vb6执行SSIS包
- 7. 从SSIS包执行多个SSRS报告
- 8. 从SSIS包执行R脚本
- 9. 从.NET执行SSIS包的问题
- 10. 从SSIS包执行SQL文件
- 11. 从远程服务器执行SSIS包
- 12. SSIS包无法执行
- 13. 如何执行包SSIS 2008
- 14. SSIS包执行(截断表)
- 15. 在Sharepoint执行SSIS包
- 16. SSIS包运行在调试模式下Visual Studio内部的
- 17. 从Visual Studio执行Oracle脚本
- 18. 多个SSIS包在单个包中执行
- 19. Visual Studio转到执行
- 20. 由执行包任务执行的SSIS打开包
- 21. Visual Studio 2008 SSIS错误
- 22. SSIS主包从另一个项目执行包
- 23. 是否可以远程执行SSIS包?
- 24. SSIS包执行错误 - 远程FTPS
- 25. 当文件到达时SSIS包执行
- 26. SSIS 2008信息警示执行包时
- 27. SSIS包执行时间长(不经常)
- 28. SSIS - 执行包任务挂起
- 29. SSIS包执行 - 内存不足问题!
- 30. 安装NuGet包从Visual Studio
嗯,你已经设置表,所以你不能插入相同的数据的两倍。您可以在加载之前将其清除,或者在流中包含查找以匹配存在的数据,因此您只能插入不存在的数据。 – Rich
我不知道如何使用它! (查找任务) –
很酷,希望这是一个指向正确方向的指针 - 网上会有大量关于如何使用查找任务的教程。 – Rich