我的SSIS包如何最好地比较表,然后仅在需要时才从源表更新目标表?

时间:2011-02-01 02:28:48

标签: ssis

我在SQL 2005服务器上有一个Employees表,在SQL 2008服务器上有一个几乎相同的Employees表(服务器没有链接)。一个表位于生产数据库中,另一个表位于开发数据库中。我必须按计划将数据从生产中提取到开发数据库中,并且我正在使用SSIS构建一个包来执行此操作。

我需要设置一个SSIS包:

  1. 比较两个表以确定它们是否“同步”。也就是说,查看prod表是否包含尚未包含在开发表中的行。
  2. 仅在必要时 - 仅使用prod表中的新行更新dev表。
  3. 我有几种方法可以做到这一点,但我正在寻找一种比我能想到的更优雅的解决方案。最好的方法是什么?

2 个答案:

答案 0 :(得分:4)

查看Slowly Changing Dimension任务。这将自动:

  1. 从您的prod db
  2. 将新记录插入您的dev db
  3. 如果prod db中的更改,则更新dev db中的现有记录(例如,如果PhoneNo更改为Prod中的记录,则Dev中的相应记录将更新为匹配)
  4. 提示:当它要求您提供更改类型时,您应该在慢速更改维度向导中选择“更改属性”。

答案 1 :(得分:3)

实现这一目标的最简单方法(尽管可能不是最有效的,具体取决于您的数据量)是将生产源数据提供给基于开发数据的查找任务,查看PK列。将不匹配的行(或使用2005时失败的行)设置为重定向到新流 - 然后您可以使用它来使用OleDb目标反馈到Development表中。