无法从SQL命令的参数中检索目标列描述

时间:2013-07-09 23:54:05

标签: stored-procedures ssis oledbcommand

我正在尝试将SSIS包从2008年升级到2012年并获得以下错误。

  

错误:SSIS错误代码DTS_E_OLEDBERROR。 OLE DB错误   发生了。错误代码:0x80004005。

     

OLE DB记录可用。资料来源:“Microsoft SQL Server Native   客户端11.0“Hresult:0x80004005描述:”元数据可以   因为语句'EXEC master.dbo.xp_logevent而无法确定   @ErrorCode,@ Message,错误'在过程'DebugPrint'中调用   扩展存储过程。“。

     

错误:无法从中检索目标列描述   SQL命令的参数。

基本上,我们有一个OLE DB命令来调用一个存储过程,它调用几个(嵌套的)存储过程,其中一个是调用master.dbo.xp_logevent的DebugPrint。有什么想法解决它吗?它适用于SSIS 2008。

由于

2 个答案:

答案 0 :(得分:1)

您可以尝试使用'结果集'在调用proc并在那里设置元数据时。

示例:

EXEC dbo.proc  
WITH RESULT SETS (
ID INT
,Col2 VARCHAR)

答案 1 :(得分:0)

我遇到了类似的错误。

An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 11.0"  Hresult: 0x80004005  Description: "The metadata could not be determined because statement '....' uses a temp table.".

解决。

如果SP使用#table or ##table并且在SP中使用它,那么我们需要指定#table结构以及EXEC

SP应与结构一起提供。

EXEC SP_TestTemp 1,2

应该像

一样给出
EXEC SP_TestTemp 1,2 WITH RESULT SETS
(
(
id      int,
Marks   int
)
)

注意:'保留相同的连接= true'和'验证外部元数据'= false没有帮助/在这里工作