0

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

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

长话短说,我决定使用变量来表示表名(源、临时和目标)。

这使我可以复制/粘贴一个序列并有效地绕过大量点击出价。

我遇到的问题是元数据似乎非常脆弱。序列似乎都在自己运行,但是当我运行整个包时,它会中断。而且永远不会在同一个地方。

这种方法对 SSIS 来说是个坏主意吗?

4

1 回答 1

0

所以只是把这个从董事会上拿下来......

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

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

oleDB 目标是不断中断的部分。

由于它引用了变量,因此我在设计时必须非常小心,以便在打开其中一个数据流之前正确设置变量。

我很确定这是问题所在。由于我无法确定 SSIS 何时在设计环境中刷新元数据,因此我无法确定在变量设置为支持序列 Y 时是否/何时刷新序列 X。

因此,虽然它在概念上应该在运行时工作,但开发时间是变更控制的噩梦。

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

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

入门课程:不要让 oledb 目的地基于变量。

感谢您的评论

于 2013-10-17T15:32:45.713 回答