4

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

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

OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 11.0” Hresult:0x80004005 描述:“无法确定元数据,因为过程 'DebugPrint' 中的语句 'EXEC master.dbo.xp_logevent @ErrorCode, @Message, error' 调用了扩展存储过程。 ”。

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

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

谢谢

4

2 回答 2

1

我遇到了类似的错误。

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 使用 a#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 在这里没有帮助/工作

于 2014-10-23T13:41:10.237 回答
1

在调用 proc 并在那里设置元数据时,您可以尝试使用“带有结果集”。

例子 :

EXEC dbo.proc  
WITH RESULT SETS (
ID INT
,Col2 VARCHAR)
于 2014-06-10T21:18:10.633 回答