我一直在处理一个包含 150 多个表的大型 ETL 项目,在设计期间,我不得不对几个表的目标列名称和数据类型进行重大更改。
我的问题是我无法让 SSIS 查看我更改的表的新架构。所以我想知道如何让 SSIS 刷新这个模式?我觉得没有办法告诉 SSIS 从数据库模式更新元数据,特别是对于数据库迁移,这有点荒谬。
从头开始重新创建项目是不可能的,因为我已经花了几个小时。手动更改我更改的 400 多列也不是一种选择。
使用Advanced Editor
并按下Refresh
下方左侧的按钮怎么样?
在我之前的自动回答之后,我终于找到了阻止刷新元数据的原因。
当我最初修改我的数据库时,我实际上执行了另一个DROP
在表上创建 a 的脚本,然后CREATE TABLE
从头开始重新创建表。在那里,SSIS 永远无法检测到更改,我不得不在其他答案中做所有事情。
今天晚些时候,我不得不进行一些小修改,这次我选择了ALTER TABLE
. 神奇的是,这一次 SSIS 检测到所有更改,甚至通知我从高级编辑器刷新列,效果很好。
所以基本上所有这些问题都是由于我对 DBA 及其最佳实践的了解不足造成的。
我找到了修复它的方法,但这有点棘手。
即使我从我的包中完全删除了对表的任何引用,我总是得到旧的元数据。
我仍然没有明确的解决方法,但这是我为解决它所做的:
不知道这些信息被缓存在哪里,但我怀疑 obj 文件夹保留了包的缓存副本,或者 Visual Studio 将元数据保存在内存中,当你关闭它时会释放它。无论如何,按照这些步骤应该可以解决它。