我有一个软件包本质上是试图将26个表从oracle复制到sql server。 它不是一个完整的表格副本,我们正在寻找属于我们公司某些“地区”的记录。
我从oracle中提取数据 我开始用肘部油脂做这个,但是26个表中的每一个都需要几个变量来进行删除,取出等。
长话短说,我决定使用变量来表示表名(source,temp和target)。
这允许我复制/粘贴一个序列,并有效地绕过大量点击点击出价。
我遇到的问题是元数据似乎非常脆弱。序列似乎都在他们自己的运行上运行,但是当我运行整个包时,它会中断。永远不会在同一个地方。
这种方法对SSIS来说是个坏主意吗?
答案 0 :(得分:0)
所以只是把它从董事会中解脱出来......
每个序列容器都有以下操作
脚本任务 - 设置变量
执行SQL任务 - 从temp中删除
数据流SourceToTemp -
ole db source - 使用从tbl到temp_tbl的泛型select *
derived column1 - 插入时间戳列
oledb目的地 - 将所有列映射到临时表( * *这是大问题儿童)
执行SQL任务 - 从目标中删除
执行SQL任务 - 从temp
oleDB目的地是一个不断破碎的作品。
由于它引用变量,我必须在设计时非常小心地在打开其中一个数据流之前正确设置变量。
我很确定这是问题所在。由于我不能说SSIS在设计环境中刷新元数据时确定性,我不能确定当变量被设置为支持序列Y时是否/当序列X刷新时。
因此,虽然它在概念上应该在运行时工作,但开发时间是一个变化控制夜间母马。
我已将所有oleDB目标更改为指向硬表名称。这实际上是一个小小的让步,因为有4个sql语句仍由变量驱动。 (节省了大量的点击和输入)
这一小改变消除了“流沙”的问题。
上一节课:没有oledb目的地基于变量。
感谢您的评论