繁体   English   中英

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

[英]Why won't an OLE DB data source update metadata when the stored procedure changes?

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

问题可能不是SSIS没有看到您的更改;而是SSIS没有看到您的更改。 而是您所做的更改对SSIS不可见。

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

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

如果没有看到所需的元数据,则必须编辑有关存储过程的更多详细信息。 但总的来说,我可以说SSIS或任何其他软件都无法确定结果集的形状。 我相信他们使用SET FMTONLY命令来安排“不是真的”查询的执行。 而是将所有参数传递给NULL。 当所有参数均为NULL或默认值时出现的结果集就是SSIS将看到的结果集。 如果您有一个复杂的SP,它根据输入返回不同形状的结果集,则可能是问题所在。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM