2017-08-07 50 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

相關問題