2013-08-21 129 views
0

我只是想知道這是否是正確的方式來完成這項任務。 任何其他建議,以改善這是非常感謝。從一個數據庫的視圖到另一個數據庫的一個表的數據傳輸

我在我的SSIS包中有以下內容。

enter image description here

  1. 數據流任務,並建立了一個OLE DB連接到源數據庫所在的視圖。
  2. 執行SQL任務 - 我正在執行一個查詢,其中包含一個INSERT INTO Destination Except(所有那些已經存在的記錄)。
  3. 發送郵件任務是發送一封電子郵件。

如何知道數據傳輸成功?這樣我可以使用發送郵件到 表示成功或失敗。

如何使其自動運行調度這個包(每星期二)

我曾嘗試下面的建議。請參閱新的數據流任務。

enter image description here

OLE DB源 - 指向數據庫服務器1 查詢視圖從OLE DB源獲取的所有行。 (來源和查找中的rowcount) 匹配。

在查找任務上,我配置了錯誤輸出以在所有映射列上使用「重定向行」。 。

在OLE DB目標(它已經具備了從源頭上記錄的子集目標表所以配置錯誤輸出得到unmatches行的插入

的時候,我執行包 - 我得到一個主鍵約束錯誤的 - 無法插入重複鍵

任何建議

回答

1

你會想雙擊從Execute SQL TaskSend Mail Task連接器目前,它是綠色的指示將只需要在成功這條道路。?。你會想要更新缺點如果成功或失敗,你不關心完成。

聽起來像你有你的數據流從你的源拉動所有的數據並寫入臨時表。在您的執行SQL任務中,然後使用查詢將數據添加到目標表中不存在的位置。

這可以合併到單個數據流中。在您的OLE DB源和OLE DB目標之間添加查找任務。自2005年以來,Lookup的行爲與2008+相比有所不同。您將編寫一個查詢,將您的目標表中的業務密鑰拉回來,然後將其與您的OLE DB源的內容進行比較。在界面中映射這些鍵。

您只需要不匹配的行,因此您需要從查找中獲取「不匹配的記錄」。在2005年,不匹配的輸出選項不存在,因此您需要將錯誤輸出路由到您的OLE DB目的地。

Andy Leonard對如何實現這一點有一個很好的小寫作:Configuration an SSIS 2005 Lookup Transformation for a Left Outer Join你的情況唯一的區別是你不關心匹配的行。而不是Ignore Failure,你想選擇Redirect Row。然後,當您將Lookup連接到OLE DB目的地時,您將看到兩個選項。綠色連接器是匹配的,紅色連接器是不匹配的行。將紅色路徑捆綁到您的目的地

+0

謝謝!在數據流選項卡中 - 我現在有一個OLE DB源(源數據庫和來自視圖的數據),查找(從源查找視圖數據)和OLE DB目標(包含目標數據庫和表) - 由於此SSIS包將每週執行一次,我只想要傳輸不匹配的記錄。我無法理解「將錯誤輸出路由到您的OLE DB目標。」任何能夠幫助我配置的鏈接例子都很棒。我感謝您的支持。 – kalls

+0

我更新了文章的描述和鏈接 – billinkc

+0

感謝您的鏈接和文章。我仍然有這個問題。當您提到「您將編寫一個查詢,將您的目標表中的業務鍵撤回,然後將其與您的OLE DB源中的業務鍵進行比較,然後在界面中映射這些鍵」我如何實現這一目標?我能夠獲得源代碼和查找任務進行編譯(以綠色顯示),並且目標由於主鍵約束而失敗。我正在查找OLE DB目的地的查找錯誤輸出。我道歉,如果這仍然模糊。我非常感謝您的支持。 – kalls

相關問題