2011-11-30 63 views
0

我有一個MS SQL數據庫和3個固有表。一個叫做「工具」的通用工具和兩個更具體的工具「DieCastTool」和「Deburrer」。是否可以使用SSIS來同時填充多個帶有繼承的表?

我的任務是從舊的MS Access「數據庫」中獲取數據。我的問題是,我必須做大量的搜索和過濾,直到我有我想要導入新數據庫的數據。所以最後我不想多次完成這些步驟,但同時填充3個表格。 因此,我正在使用da Dataflowtarget,其中我沒有選擇某個表,但使用sql select語句(在id列上具有內部聯接)來接收3個表的所有字段。然後我匹配列,在我看來它應該工作。只要我選擇要填充的「工具」表中的列,它就會生效。當添加兒童表的列,遺憾的是它不和我返回的錯誤代碼-1071607685 =>「沒有狀態可用」

我能想到的2個原因我的解決方案不起作用:

  1. SSIS根本無法處理SQL Tables中的繼承,並將它們視爲單獨的表。 (也許SSIS甚至無法處理在一個Dataflow目標元素中填充多個表?)
  2. 我正在以錯誤的方式使用SSIS。

如果有人可以確認/拒絕原因1,會很好,因爲我沒有在這個主題上找到任何東西。

+0

如果我要總結一下,源數據非常難看,清理它很複雜。由於這些複雜性,您的首選項是清理一次數據,然後依次寫入最多3個表以尊重潛在的FK關係。 – billinkc

回答

0

是的,SSIS不知道表關係。把它想象爲:SSIS只知道物理對象,而不是你的邏輯模型。

我不明白你是如何得到這個錯誤的。無論如何,這裏有解決方案:

  1. 如果有這些表之間沒有FK的限制,您可以使用一個源組件,一個組播和在一個數據流
  2. 3個目的地,如果有FK約束和您可以禁用它們,然後用 執行SQL任務禁用(或下降)的限制,添加相同 數據流在1和添加另一個執行SQL任務以啓用(或 創建)約束
  3. 如果有FK約束,你可以」 t禁用它們,您可以使用一個數據流讀取所有數據並將其傳遞到後續數據流到 按表填表。見 SSIS Pass Datasource Between Control Flow Tasks
+0

謝謝我解決了我的問題,解決方案沒有。 3 =>首先讀出數據,完成所有過濾內容並將數據寫入臨時存儲器,然後分別用這些數據填充表格 –

+0

btw它沒有使用多播來填充DieCastTool和Deburrer表(在同時),我不得不將它分成獨立的數據流 –

+0

@Da_Wolf,有趣的是,爲什麼?這兩者之間有pk/fk關係嗎?我經常這樣做 –

相關問題