0

我有一个带有数据流任务的 SSIS 包。OLE DB 源有一个执行过程语句。保存时失败,并显示以下错误消息。

an OLEDB record is available... The metadata could not be determined because the statement 'select appname....' in procedure is not compatible with the statement 'select appid....' in procedure

这个过程有几个选择语句,并根据传递的参数返回适当的结果集。任何绕过此错误的指针?

4

2 回答 2

0

所以你是说SP会根据传递的参数返回不同的元数据?SSIS 不喜欢这样——它不能在运行时动态更新元数据。即,如果您创建一个在某个列上拆分或排序的包,然后您运行 SP 并且它不返回该列,或者同一列是不同的数据类型,那么 SSIS 应该怎么做?它不能自动解决。

我建议您为返回的每个结果集的可能性创建一个数据源,并根据需要有条件地执行每个。

简而言之,SP 返回可选的不同数据集通常不是一个好主意,绝对不是从 ETL 的角度来看。

下面是一些代码,展示了如何创建动态构建的输出,(您可以使用相同的方法只使用一个输出),但您仍然会在下游面临同样的问题。

http://www.codeproject.com/Articles/32151/How-to-Use-a-Multi-Result-Set-Stored-Procedure-in

于 2013-09-15T22:38:27.703 回答
0

我也遇到了这个问题。在我的例子中,无论执行哪个分支,返回的结果看起来都是一样的,不同之处在于结果是如何获得的(包括不同的源表)。我只是用一个联合执行了所有案例,每个“where”子句都包含了执行条件,而不是使用“if”逻辑来选择查询。

于 2015-09-09T18:40:03.447 回答