2010-06-18 30 views
0

我有一個簡單的SSIS項目。在控制流我有三個步驟:SSIS運行好個別任務,不在一起

Step 1: Select Data from Db1.Table1

Step 2: Create Table2 in Db2

Step 3: Copy Data in Db1.Table1 to Db2.Table2

如果我爲了「執行任務」一個接一個,它執行罰款...但如果我嘗試運行我收到以下錯誤,整個項目:

Error at Copy Data from Table1 to DB2 dbo Table2 Task [OLE DB Destination[40]]: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E37.

An OLE DB record is available. Source: "Microsoft OLE DB Provider for SQL Server" Hresult: 0x80040E37 Description: "Invalid object name 'DB2.dbo.Table2".".

+1

您是否在步驟之間添加了控制流依賴關係?否則,他們會嘗試並行運行。 – 2010-06-18 14:06:41

+0

是的。有控制流依賴關係。 – davemackey 2010-06-18 14:46:51

回答

4

問題出在驗證。在默認情況下,子任務DelayValidation被禁用。由於第二步創建的表格在第三步中填充了第一步中提取的數據,因此存在驗證錯誤。 SSIS查找表並且它不存在。通過啓用DelayValidation,它運行良好 - 因爲它不會在執行之前強制表存在。

1

你的控制流對我來說沒有意義。根本沒有理由有一個只選擇記錄的步驟。當這個工作作爲一個工作誰會看到它,如果你不做;不做任何事情,那麼爲什麼選擇。

如果你沒有做清理或轉換,你甚至爲什麼要使用SSIS?不會;從表1中選擇到表2中就足夠了嗎?當然,如果運行多次,這是個問題,所以如果不存在,我可能會編寫一個腳本來創建表格,截斷它(我假設你將在這裏替換數據),然後插入它。