我有数据需要加载,因为我上次拔出这些数据时只需要拉记录。没有日期字段将此信息保存在目标表中,因此我必须跟踪上次提取的最长日期。问题是我无法在下次项目运行时看到如何在SSIS中保存此值。
我看到了这个: Persist a variable value in SSIS package
但它对我不起作用,因为有另一个进程清除并重新加载与我的进程分开的数据。这意味着我必须做的不仅仅是知道我的进程最后一次运行。
我能想到的唯一解决方案是创建一个表,但创建一个表来保存一个字段似乎有点多。
答案 0 :(得分:1)
这是一件很常见的事情。您可以创建一个执行表来存储程序包名称,开始时间,结束时间以及程序包是否失败/成功。然后,您可以拉出上次成功运行执行的最长开始时间。
答案 1 :(得分:0)
在执行之间,您无法在包中保留任何内容。
您正在谈论的是差异复制的一种形式,这已经做了很多次。
对于差异复制,在订阅者(读取数据的系统)或发布者(提供数据的系统)中存储某种状态是很正常的,它会记住您所处的状态。
所以我建议你:
如果您最终拥有多个源系统或多个源表,则您的存储表不会只有一个记录。想一想。我前几天回答了这样一个问题 - 随着时间的推移,你会发现你会像上一次复制一样,需要花多长时间,传输了多少条记录等来添加方便的东西。 / p>
Is it viable to have a SQL table with only one row and one column?
答案 2 :(得分:0)
TTeeple和Nick.McDermaid绝对正确,如果人性化,你应该听从他们的建议。
但是如果由于某种原因你没有写入执行表的权限,你总是可以使用脚本任务在任何本地文件系统上读取/写入最后加载的日期到文本文件正在运行SSIS。