我正在尝试将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。
由于
答案 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没有帮助/在这里工作