爲什麼當我第二次在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. 執行SSIS包崩潰Visual Studio
- 2. 從Visual Studio運行時SSIS包不能執行
- 3. 從Visual Studio數據庫項目部署執行SSIS包?
- 4. 在VIsual Studio 2013中執行SSIS包時看不到行數
- 5. Visual Studio的SSIS包存儲
- 6. 未安裝SQL和Visual Studio時執行SSIS包
- 7. 從c#執行SSIS包#
- 8. 從C#執行SSIS包
- 9. 執行SSIS包
- 10. 錯誤執行SSIS包
- 11. 執行SSIS包使用ASP.Net
- 12. 如何從c#執行多個ssis包#
- 13. 從ASP.NET執行SSIS包時出錯
- 14. 不能從vb6執行SSIS包
- 15. 錯誤而從作業執行SSIS包
- 16. 從遠程服務器執行SSIS包
- 17. 從SSIS包執行R腳本
- 18. 從SSIS包執行SQL文件
- 19. 從.NET執行SSIS包的問題
- 20. 從SSIS包執行多個SSRS報告
- 21. SSIS包執行(截斷表)
- 22. 在Sharepoint執行SSIS包
- 23. 如何執行包SSIS 2008
- 24. SSIS包無法執行
- 25. SSIS包 - 子包未得到執行
- 26. SSIS包運行在調試模式下Visual Studio內部的
- 27. 從C#Visual Studio 2010調用SSIS包。獲取錯誤0xC0011008
- 28. 從Visual Studio執行Oracle腳本
- 29. 在sql server 2005上執行SSIS包2005
- 30. 執行SSIS包不含包名
嗯,你已經設置表,所以你不能插入相同的數據的兩倍。您可以在加載之前將其清除,或者在流中包含查找以匹配存在的數據,因此您只能插入不存在的數據。 – Rich
我不知道如何使用它! (查找任務) –
很酷,希望這是一個指向正確方向的指針 - 網上會有大量關於如何使用查找任務的教程。 – Rich