11

我一直在处理一个包含 150 多个表的大型 ETL 项目,在设计期间,我不得不对几个表的目标列名称和数据类型进行重大更改。

我的问题是我无法让 SSIS 查看我更改的表的新架构。所以我想知道如何让 SSIS 刷新这个模式?我觉得没有办法告诉 SSIS 从数据库模式更新元数据,特别是对于数据库迁移,这有点荒谬。

从头开始重新创建项目是不可能的,因为我已经花了几个小时。手动更改我更改的 400 多列也不是一种选择。

4

3 回答 3

19

使用Advanced Editor并按下Refresh下方左侧的按钮怎么样?

于 2012-11-08T13:53:58.463 回答
4

在我之前的自动回答之后,我终于找到了阻止刷新元数据的原因。

当我最初修改我的数据库时,我实际上执行了另一个DROP在表上创建 a 的脚本,然后CREATE TABLE从头开始重新创建表。在那里,SSIS 永远无法检测到更改,我不得不在其他答案中做所有事情。

今天晚些时候,我不得不进行一些小修改,这次我选择了ALTER TABLE. 神奇的是,这一次 SSIS 检测到所有更改,甚至通知我从高级编辑器刷新列,效果很好。

所以基本上所有这些问题都是由于我对 DBA 及其最佳实践的了解不足造成的。

于 2012-06-13T14:30:35.393 回答
3

我找到了修复它的方法,但这有点棘手。

即使我从我的包中完全删除了对表的任何引用,我总是得到旧的元数据。

我仍然没有明确的解决方法,但这是我为解决它所做的:

  • 删除了对相关源表和目标表的任何引用
  • 从项目文件夹中删除了 obj 和 bin 文件夹
  • 保存,关闭然后重新打开项目
  • 从头开始创建新的数据流并最终更新元数据

不知道这些信息被缓存在哪里,但我怀疑 obj 文件夹保留了包的缓存副本,或者 Visual Studio 将元数据保存在内存中,当你关闭它时会释放它。无论如何,按照这些步骤应该可以解决它。

于 2012-06-11T14:48:02.553 回答