在SSIS中保留数据以进行下一步执行

时间:2015-05-28 20:28:33

标签: sql-server ssis sql-server-2012 ssis-2012

我有数据需要加载,因为我上次拔出这些数据时只需要拉记录。没有日期字段将此信息保存在目标表中,因此我必须跟踪上次提取的最长日期。问题是我无法在下次项目运行时看到如何在SSIS中保存此值。

我看到了这个: Persist a variable value in SSIS package

但它对我不起作用,因为有另一个进程清除并重新加载与我的进程分开的数据。这意味着我必须做的不仅仅是知道我的进程最后一次运行。

我能想到的唯一解决方案是创建一个表,但创建一个表来保存一个字段似乎有点多。

3 个答案:

答案 0 :(得分:1)

这是一件很常见的事情。您可以创建一个执行表来存储程序包名称,开始时间,结束时间以及程序包是否失败/成功。然后,您可以拉出上次成功运行执行的最长开始时间。

答案 1 :(得分:0)

在执行之间,您无法在包中保留任何内容。

您正在谈论的是差异复制的一种形式,这已经做了很多次。

对于差异复制,在订阅者(读取数据的系统)或发布者(提供数据的系统)中存储某种状态是很正常的,它会记住您所处的状态。

所以我建议你:

  1. 阅读差异复制设计模式
  2. 绝对让您放心地将数据写入表格
  3. 如果您最终拥有多个源系统或多个源表,则您的存储表不会只有一个记录。想一想。我前几天回答了这样一个问题 - 随着时间的推移,你会发现你会像上一次复制一样,需要花多长时间,传输了多少条记录等来添加方便的东西。 / p>

    Is it viable to have a SQL table with only one row and one column?

答案 2 :(得分:0)

TTeeple和Nick.McDermaid绝对正确,如果人性化,你应该听从他们的建议。

但是如果由于某种原因你没有写入执行表的权限,你总是可以使用脚本任务在任何本地文件系统上读取/写入最后加载的日期到文本文件正在运行SSIS。