Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSIS-变量驱动包_Ssis - Fatal编程技术网

SSIS-变量驱动包

SSIS-变量驱动包,ssis,Ssis,我有一个软件包,它实际上是试图将26个表从oracle复制到sql server。 它不是一个完整的表副本,我们正在寻找属于我们公司某些“地区”的记录 我从oracle中提取数据 我刚开始用肘部润滑脂做这件事,但26个表中的每个表都需要几个变量来执行删除、获取等操作 长话短说,我决定使用变量来表示表名(source、temp和target) 这使我能够复制/粘贴一个序列,并有效地绕过了大量的点击投标 我遇到的问题是元数据似乎非常脆弱。所有的序列似乎都在运行,但当我运行整个程序包时,它就崩溃了。永

我有一个软件包,它实际上是试图将26个表从oracle复制到sql server。 它不是一个完整的表副本,我们正在寻找属于我们公司某些“地区”的记录

我从oracle中提取数据 我刚开始用肘部润滑脂做这件事,但26个表中的每个表都需要几个变量来执行删除、获取等操作

长话短说,我决定使用变量来表示表名(source、temp和target)

这使我能够复制/粘贴一个序列,并有效地绕过了大量的点击投标

我遇到的问题是元数据似乎非常脆弱。所有的序列似乎都在运行,但当我运行整个程序包时,它就崩溃了。永远不会在同一个地方


使用SSI时,这种方法是一个坏主意吗

所以只要把这个从黑板上拿下来

每个序列容器都有以下操作

脚本任务集变量 执行SQL任务-从临时文件中删除 数据流SourceToTemp-
ole db源-使用了从tbl到temp_tbl的通用select* 派生列1-插入时间戳列 oledb destination-将所有列映射到临时表(**这是一个大问题) 执行SQL任务-从目标中删除 执行SQL任务-插入目标从临时选择

oleDB目的地是不断断裂的部分

因为它引用了变量,所以在打开一个数据流之前,我必须在设计时非常小心地正确设置变量

我很确定这就是问题所在。由于当SSIS在设计环境中刷新元数据时,我不能说w/确定,所以我不能确定当变量设置为支持序列Y时,序列X是否/何时刷新

所以,虽然从概念上讲,它应该在运行时工作,但开发时是一个变更控制的噩梦

我已将所有oleDB目的地更改为指向硬表名。这实际上是一个小小的让步,因为有4条sql语句仍然由变量驱动。(节省了我大量的点击和打字时间)

这个小小的变化消除了“流沙”问题

Take-a-way课程:不要让oledb目标基于变量


感谢您的评论

我认为您需要仔细检查变量是如何初始化的。如果事情自行运行,但整个包都中断了,那么听起来您的变量值被一个序列修改成了意外的结果。那么下一个序列可能会失败。除了@DeanOC的精细理论之外,我认为一个流中的元数据可能依赖于前一个任务。看起来有点可疑,但这取决于肘部油脂中混入了多少沙子。我发现,如果我将包集中在一个主题领域,然后用主包协调整个过程,我会有更好的SSIS体验。@billinkc是对的,有时还可以允许一些连接到Oracle…,如果在dataflow 3或更多源表中使用,你可以打破这个限制…26个序列框是串行连接的。每个步骤的第一步是设置变量。(事实上,我可以设置1,其他一切都是基于这个。我放弃了这个方法。整个概念的设计是为了节省开发时间,显然,它失败了。哈哈。