【问题标题】:Refresh destination schema metadata in Integration Services在 Integration Services 中刷新目标架构元数据
【发布时间】:2012-11-08 22:18:20
【问题描述】:

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

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

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

【问题讨论】:

  • 这个可能无法解决您的问题,但它可以提供帮助。整个 SSIS 包只是 xml。您可以使用“查找和替换”更改 xml 数据或创建自己的工具。如果您想跟踪 SSIS 中的更改,您必须使用 UDM(数据源视图)。
  • 我之前实际上查看了我的包 XML,但是要更改的列太多,因此由于某些更改的特殊性,即使查找/替换也无法修复它。谢谢。

标签: ssis refresh metadata


【解决方案1】:

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

【讨论】:

  • 非常简单,但为我完成了这项工作!
  • @Fishcake -- 在非高级(例如普通)编辑器上应该有这么简单的东西。我不知道为什么微软认为在高级编辑器后面隐藏一堆在我看来(并且我假设很多其他人的观点)的 BASIC 功能是个好主意。
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

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

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

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

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

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

    【讨论】:

    • 我认为如果您打开目标组件并转到映射选项卡,它应该会获取新的元数据。这通常对我有用。
    • 这是我做的第一件事,但它总是给我旧的元数据。
    猜你喜欢
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 2012-11-30
    • 2012-03-29
    相关资源
    最近更新 更多