Sql server 2005 存储过程更改时,OLE DB数据源为什么不更新元数据?

Sql server 2005 存储过程更改时,OLE DB数据源为什么不更新元数据?,sql-server-2005,ssis,Sql Server 2005,Ssis,我正在从SSIS中的OLE DB数据源调用存储过程。为什么SSIS看不到我对存储过程所做的更改?似乎存储过程的元数据被缓存在某个地方。它被缓存了吗?如果是,我如何强制SSIS查看我对存储过程所做的更改?问题可能不是SSIS没有看到您的更改;而是您正在更改的内容对SSI不可见 要澄清这个非常令人困惑的答案,请尝试以下方法:将OLEDB数据源拖到某个数据流上。使用相同的参数等将其连接到相同的存储过程。检查输出列的元数据 如果它们是您所期望的,那么问题是SSIS没有看到您的更改。如果这是答案的话,我会

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

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

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

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


如果没有看到预期的元数据,则必须编辑文章,并提供存储过程的更多详细信息。但我可以说,一般来说,SSI或任何其他软件都不能在所有情况下确定结果集的形状。我相信他们使用setfmtonly命令来安排查询不会真正执行。相反,它们的所有参数都被传递为NULL。当所有参数都为NULL或默认值时发生的结果集是SSIS将看到的结果集。如果您有一个复杂的SP,它根据输入返回不同形状的结果集,那么这可能就是问题所在。

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