当存储过程发生更改时,为什么OLE DB数据源不会更新元数据?

时间:2009-04-25 06:23:24

标签: sql-server-2005 ssis

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

2 个答案:

答案 0 :(得分:0)

问题可能不是SSIS没有看到你的变化;而是SSIS看不到你正在改变的东西。

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

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

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

答案 1 :(得分:0)

要重新生成元数据,只需删除流管道(红色和绿色),然后重新添加它们。这是我在这个问题上找到的最简单的解决方案。