2010-04-15 37 views
0

我有一个挑战,我试图解决,我不能从文档或示例工作,如果SSIS适合我的问题。SSIS是否适合我的问题(数据库复制查询)

我有2个表格(工作和任务)。乔布斯代表了一大部分工作,而任务与工作息息相关。通常会有从每个作业1个任务到每个作业1,000,000个任务的任何事情。每个任务都有一个存储job_id的列。作业表中的job_id是主键。

每N个小时,我要做到以下几点:

  1. 采取一切在那里,因为我最后一次运行的工作已经完成了任务的行(基于具有END_TIME值,该值是内从现在起到上次运行的时间),并将这些添加到“查询”数据库的作业列中。

  2. 将包含在第1步中的作业中具有job_id的所有任务复制到“查询”数据库的任务列中。

基本上,我希望能够经常更新我的查询的数据库,但我只希望包括那些完成的任务已完成的工作(因此一个END_TIME)的要求和任务。

这可能会每天进行2-3次,以便用户能够查询实时数据的近似最新副本。

SSIS是否适合这项任务,如果有的话,您可以请建议一些文档,以显示第一步的结果列中的哪一列用作第二步的标准?

在此先感谢...

回答

0

当然SSIS可以做到这一点。

如果您想确保子记录已移动,请为您的数据流源查询第二个数据流。您将记录插入到第一个数据流中的主表中。然后,您使用一个查询来选择源子表中不在目标子表中并且在父目标表中有记录的任何记录。通过这种方式,您可以捕捉现有已关闭记录的任何更改(您知道会有一些,有些人会过早关闭某个工作,然后重新打开并添加一些内容)。

或者,您可以添加记录移动到临时表。然后在为子表执行数据流时加入该表。这将确保您移动的记录是子表填充的记录。

或者,如果您处于非规范化数据仓库中,只需编写一个查询,将父表和子表连接在一起,并且结束日期的where子句不为null。当然,不要忘记检查当前不在数据仓库中的记录。

+0

辉煌 - 谢谢...我会坚持在文档中,并尝试了解如何做到这一点。 幸运的是,没有办法再开一份工作,所以那里的风险不大。这是一个包含作业和任务的原子提交。 最后的放纵请...您有没有指向一个文档的解释SSIS如何理解目标上的数据以及需要运行哪些数据的指针? 在我的脚本解决方案中,我得到一个datestamp(包括时间),将最后一次运行从数据库中拉出,然后获取该窗口中的行。最后,我将新的日期戳记放入数据库中。 – Anonymouslemming 2010-04-15 14:32:01