2015-02-06 37 views
1

我對SSIS有點新,如果這是一個重複的帖子,或者只是一個愚蠢的問題,請提前道歉。SSIS - 使用SSIS創建SQL表,加載數據,運行代碼和丟棄表

我想在SSIS創建以下過程:

1- [SQL Execute Task] Create Table in SQL DB 
2- [Data Flow Task] Load Data from a source file (.xls) into the Created SQL table 
3- [SQL Execute Task] Run Code on Created SQL table 
4- [SQL Execute Task] Drop the SQL table that was created 

我遇到的問題是,當我把我的OLE DB目標,它希望在已創建的表。我嘗試創建表,然後運行該過程,它第一次工作,但第二次說表不存在,即使它跳過創建表的第1步的錯誤。

任何關於解決問題的想法,還是我錯過了一些非常明顯的東西?

提前致謝!

+0

[如何在SSIS控制流任務中創建臨時表並將其用於數據流任務?](http://stackoverflow.com/questions/5631010/how-to-create-a-temporary -table-in-ssis-control-flow-task-and-then-use-it-in-dat) – 2015-02-06 01:34:55

回答

3

那麼首先,爲什麼每次都丟下桌子?你的包需要一致的元數據表,所以爲什麼不截斷它並保存下一個負載呢?這對於SSIS包來說是一種非常糟糕的方法。

它失敗的原因是因爲SSIS同時對所有組件進行設計時和運行時驗證,所以它看到的是表不在那裏。

但是,如果您的心設置了此方法,則需要將目標組件的ValidateExternalMetadata屬性設置爲false。只要組件上的外部列與您的CREATE TABLE語句生成的實際列匹配,您就可以輕鬆前往。

+0

謝謝凱爾。我同意你不放棄表格,而是使用truncate,但我們希望在某些特殊情況下使用它。感謝您的分享,非常感謝! – cryocaustik 2015-02-07 16:16:22