2017-01-03 78 views
-1

我有一個SSIS包,它使用帶有動態SQL作爲OLEDB源的存儲過程。當我執行這個包,我得到這個錯誤在SSIS中使用動態sql存儲過程時出錯OLE-DB源

來源:「Microsoft SQL Server的本機客戶端11.0」 HRESULT:0x80004005的 說明:「元數據不能確定,因爲聲明 ‘EXEC sp_executesql的@sqlStr’手續's_offc_cap_st_rpt_efile' 包含動態SQL,請考慮使用WITH RESULT SETS子句 明確描述結果集。「

Oledb source配置是這樣的:

enter image description here

,這是什麼錯誤的原因是什麼?有人能幫我找到解決這個問題的方法嗎?

+0

您是否嘗試使用WITH RESULT SETS子句,如錯誤消息所示? –

+0

我試圖把它放在存儲過程中......沒有解決 – bmsqldev

+0

然後你做錯了。請發佈您的嘗試,以便我們可以幫助調試它。你不使用它在存儲過程中,而是在調用中。看到這裏:http://stackoverflow.com/a/28328734/1507566 –

回答

1

總是需要SSIS選擇列表來創建元數據,以便SSIS中的列名可以映射到適當的輸出\目的地。

這裏您使用的是動態sql,它將在運行時自行編譯和運行。如果你想刪除這個錯誤。我建議創建表變量並將動態sql的輸出結果輸入到此表變量中,並從@tablevaribale中寫入select *。所以這個過程將把列表返回給ssis。

+0

在存儲過程中創建動態sql ..如果我在存儲過程內創建表變量將它工作 – bmsqldev

+1

@bmsqldev是一旦你創建表變量和轉儲輸出的動態SQL,然後寫選擇將在該表變量上運行的語句。請讓我知道,如果你仍然發現問題 –

相關問題