【发布时间】:2009-04-25 06:23:23
【问题描述】:
我正在从 SSIS 中的 OLE DB 数据源调用存储过程。为什么 SSIS 看不到我对存储过程所做的更改?似乎有关存储过程的元数据缓存在某处。它被缓存了吗?如果是这样,我如何强制 SSIS 查看我对存储过程所做的更改?
【问题讨论】:
标签: sql-server-2005 ssis
我正在从 SSIS 中的 OLE DB 数据源调用存储过程。为什么 SSIS 看不到我对存储过程所做的更改?似乎有关存储过程的元数据缓存在某处。它被缓存了吗?如果是这样,我如何强制 SSIS 查看我对存储过程所做的更改?
【问题讨论】:
标签: sql-server-2005 ssis
问题可能不在于 SSIS 没有看到您的更改;而是您正在更改的内容对 SSIS 不可见。
要澄清这个非常令人困惑的答案,请尝试以下操作:将 OLE DB 数据源拖到某个数据流上。将其连接到具有相同参数等的相同存储过程。检查输出列的元数据。
如果它们是您所期望的,那么问题是 SSIS 没有看到您的更改。如果这是答案,我会感到惊讶 - 如果有的话,SSIS 对于查看元数据的变化(尤其是在 2005 版本中)过于挑剔。
如果您没有看到您期望的元数据,那么您将不得不编辑您的帖子,以提供有关您的存储过程的更多详细信息。但我可以说一般来说,无论是 SSIS 还是任何其他软件都不能在所有情况下确定结果集的形状。我相信他们使用 SET FMTONLY 命令来安排查询“不是真的”执行。相反,它们的所有参数都被传递为 NULL。当所有参数为 NULL 或默认值时出现的结果集是 SSIS 将看到的结果集。如果您有一个复杂的 SP,它会根据输入返回不同形状的结果集,那么这可能就是问题所在。
【讨论】:
要重新生成元数据,只需删除流管(红色和绿色),然后重新添加它们。这是我发现的最简单的解决方案。
【讨论】: