Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stored procedures 无法从SQL命令的参数中检索目标列描述_Stored Procedures_Ssis_Oledbcommand - Fatal编程技术网

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

Stored procedures 无法从SQL命令的参数中检索目标列描述,stored-procedures,ssis,oledbcommand,Stored Procedures,Ssis,Oledbcommand,我正在尝试将SSIS包从2008年升级到2012年,并出现以下错误 错误:SSIS错误代码DTS_E_OLEDBERROR。出现OLE DB错误 发生。错误代码:0x80004005 OLE DB记录可用。来源:“Microsoft SQL Server本机” 客户端11.0“Hresult:0x80004005说明:”元数据可能 无法确定,因为语句“EXEC master.dbo.xp\u logevent” @过程“DebugPrint”中的ErrorCode、@Message、error”

我正在尝试将SSIS包从2008年升级到2012年,并出现以下错误

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

OLE DB记录可用。来源:“Microsoft SQL Server本机” 客户端11.0“Hresult:0x80004005说明:”元数据可能 无法确定,因为语句“EXEC master.dbo.xp\u logevent” @过程“DebugPrint”中的ErrorCode、@Message、error”调用 扩展存储过程。”

错误:无法从中检索目标列说明 SQL命令的参数

基本上,我们有一个OLE DB命令来调用一个存储过程,该存储过程调用多个(嵌套)存储过程,其中一个是DebugPrint,它调用master.dbo.xp_logevent。有什么好办法吗?它在SSIS 2008中工作


谢谢

在调用proc并在那里设置元数据时,您可以尝试使用“with result set”

例如:

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

我遇到了一个类似的错误

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使用
#表或#表
,并且它在SP中使用,那么我们需要指定#表结构以及
EXEC

SP应随结构一起给出

EXEC SP_TestTemp 1,2
应该是这样的

EXEC SP_TestTemp 1,2 WITH RESULT SETS
(
(
id      int,
Marks   int
)
)

注意:“retain same connection=true”和“validate external metadata”=false在此处不起作用

如果打开sql server management studio并在2012上直接调用存储过程,它是否起作用?我的假设是,它返回相同的错误消息。在SSMS中,sp工作正常。有趣的错误,这种方法解决了问题吗?“已将连接管理器中数据库的连接字符串更改为使用提供程序SQLOLEDB.1(用于SQL Server的Microsoft OLE DB提供程序)。已通过此线程将其设置为SQLNCLI10.1(SQL Server本机客户端10.0)”。感谢您的建议。它也不起作用。在我的团队讨论之后,我们决定删除调试SP,因为它在我们的情况下不是必需的,并加快了升级过程。我希望有一天,我们能更多地了解这个错误。我理解。如果您有一个非生产系统可以在其上重新创建错误,那么需要检查的另一件事是,补丁(Service pack、CU或QFE)是否可以缓解问题。