【问题标题】:Why won't an OLE DB data source update metadata when the stored procedure changes?为什么存储过程更改时 OLE DB 数据源不更新元数据?
【发布时间】:2009-04-25 06:23:23
【问题描述】:

我正在从 SSIS 中的 OLE DB 数据源调用存储过程。为什么 SSIS 看不到我对存储过程所做的更改?似乎有关存储过程的元数据缓存在某处。它被缓存了吗?如果是这样,我如何强制 SSIS 查看我对存储过程所做的更改?

【问题讨论】:

    标签: sql-server-2005 ssis


    【解决方案1】:

    问题可能不在于 SSIS 没有看到您的更改;而是您正在更改的内容对 SSIS 不可见。

    要澄清这个非常令人困惑的答案,请尝试以下操作:将 OLE DB 数据源拖到某个数据流上。将其连接到具有相同参数等的相同存储过程。检查输出列的元数据。

    如果它们是您所期望的,那么问题是 SSIS 没有看到您的更改。如果这是答案,我会感到惊讶 - 如果有的话,SSIS 对于查看元数据的变化(尤其是在 2005 版本中)过于挑剔。

    如果您没有看到您期望的元数据,那么您将不得不编辑您的帖子,以提供有关您的存储过程的更多详细信息。但我可以说一般来说,无论是 SSIS 还是任何其他软件都不能在所有情况下确定结果集的形状。我相信他们使用 SET FMTONLY 命令来安排查询“不是真的”执行。相反,它们的所有参数都被传递为 NULL。当所有参数为 NULL 或默认值时出现的结果集是 SSIS 将看到的结果集。如果您有一个复杂的 SP,它会根据输入返回不同形状的结果集,那么这可能就是问题所在。

    【讨论】:

      【解决方案2】:

      要重新生成元数据,只需删除流管(红色和绿色),然后重新添加它们。这是我发现的最简单的解决方案。

      【讨论】:

        猜你喜欢
        • 2019-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-03
        • 1970-01-01
        • 2017-05-27
        • 1970-01-01
        相关资源
        最近更新 更多