2017-08-07 596 views
0

我已将SSIS包从2008升级到2014.此外,我已将提供程序值更改为“Provider = SQLNCLI11.1 ”。当我跑我得到了错误,如无法确定元数据,因为语句INSERT INTO #temp_display()values()使用临时表

OLE_SOURCE_RECORDS [9]] Error: SSIS Error Code DTS_E_OLEDBERROR.
An OLE DB error has occurred. Error code: 0x80004005.
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 'INSERT INTO #temptest ([a],[b]) values (0,'b' in procedure SPtest' uses a temp table.".

我研究后发现,我们需要使用具有结果集,而不是临时table.But我需要修改SP的所有SQL查询。

是否有任何方法可以运行包而不更改存储过程。

回答

0

如果你想使用本地临时表中SSIS你应该知道的两个设置:

1)RetainSameConnection属性为True

本地临时表只在当前会话中是可见的。所以你需要保持组件之间的连接。

2)ValidateExternalMetadata to False

+0

它不起作用。我得到了同样的错误。我从变量动态获取连接字符串。 – Overcrash007

+0

@ Overcrash007请将您的SSIS包与描述一起发布。 – lad2025

+0

包会动态地从varriable中取连接字符串。将ssis包从2008升级到2014之后,我尝试运行它使用#temporary表调用存储过程的包,但得到了上面显示的错误。什么是升级后的临时表的问题,我该如何解决它。 – Overcrash007