2011-02-01 30 views
2

我在SQL 2005服務器上有一個Employees表,並且在SQL 2008服務器上有一個幾乎相同的Employees表(服務器沒有鏈接)。一個表位於生產數據庫中,另一個位於開發數據庫中。我必須按照計劃將數據從生產中提取到開發數據庫中,並且我正在使用SSIS構建一個包來執行此操作。我的SSIS包如何最好地比較表,然後僅在需要時從源表更新目標表?

我需要建立一個SSIS包將:

  1. 比較兩個表來確定,如果他們不「同步的」。也就是說,查看prod表是否有尚未在開發表中的行。
  2. 僅在必要時 - 使用prod表中的新行更新dev表。

我已經混淆了幾種這樣做的方式,但我正在尋找一種比我所能想到的更優雅的解決方案。什麼是最好的方法來做到這一點?

回答

3

實現此目的最簡單的方法(儘管可能不是最有效的取決於您的數據量)是將生產源數據提供給基於開發數據的查找任務,查找PK列(s )。將不匹配的行(如果使用2005)設置爲重定向到新流,則可以使用OleDb目標將其反饋到開發表中。

+0

完美!我不知道查找任務,這完全符合法案。萬分感謝Revelator。 – theog 2011-02-01 17:25:02

4

看看Slowly Changing Dimension任務。這將自動將:

  1. 新記錄插入到你的開發數據庫從您的督促分貝
  2. 更新現有的在你的開發數據庫,​​如果它在督促分貝的變化記錄(例如,如果PHONENO正式版將更改的記錄,那麼Dev中的相應記錄將更新爲匹配)

提示:當它詢問您是否更改類型時,應該在慢速更改維度嚮導中選擇「更改屬性」。

+0

我會看看那個。謝謝喬! – theog 2011-02-02 04:06:29

相關問題