2017-04-25 68 views
3

當執行一個SSIS包時,出現以下錯誤:無法將變量值傳遞給存儲過程在SSIS

[OLE DB Source [83]] Error: The SQL command requires a parameter named "@Sales_person", which is not found in the parameter mapping.

[SSIS.Pipeline] Error: OLE DB Source failed the pre-execute phase and returned error code 0xC0207014.

下面是我的OLE DB源編輯器的屏幕快照 enter image description here

enter image description here

enter image description here

我看到帕拉姆方向的選項卡在設置查詢參數中,如何使用?在我的情況下,我將使用InputOutputInputOutput

+0

'錯誤:OLE DB源失敗了預執行階段並返回了錯誤代碼0xC0207014.'聽起來例如,如果將延遲驗證應用於可能解決您的問題的數據流任務的屬性。你也可以讓User :: SALES表達式不斷地自我評估,使它看起來像流表現的一樣,這可以讓你在執行驗證檢查時超越預執行階段。 – Shaulinator

+0

DelayValidation在數據流任務中爲True –

+0

@ mehtat_90看看我的答案,如果它不起作用,給我一個答覆 – Hadi

回答

2

搜索我沒有發現這個問題,對我工作的解決方案後。有很多建議,例如在執行命令之前添加SET NOCOUNT ON。下面的一些相關鏈接:

你可以做一個變通方法

聲明一個變量SSIS (假設@[User::Query]

@[User::Query]屬性EvaluateAsExpression =真,並使用以下表達式

"EXEC [dbo].[GetDales_Person_data] " + @[User::Sales] 

如果@[User::Sales]是一個字符串使用下面

"EXEC [dbo].[GetDales_Person_data] '" + @[User::Sales] + "'" 

然後在OLEDB Source使用SQL Command from variable和選擇@[User::Query]

+0

http://www.sqlservercentral.com/articles/Data+Flow+Task+(SSIS)/117370/幫助我解決了這個問題。 –

0

問題是與映射。請查看圖片和下方源改正的,你應該把它設置爲:

Exec [dbo].[GetSales_Person_Data] @Sales_person = ? 

enter image description here

Source - geek with blogs

+0

它會拋出一個錯誤「EXEC SQL構造或語句不受支持。 –

+0

如果使用'[dbo]。[GetSales_Person_Data] @Sales_person =?'會怎麼樣。你可能不得不放棄執行。 [來源](https://social.msdn.microsoft.com/Forums/sqlserver/en-US/479c6c00-7cb4-47cc-92fc-9ea9d503e7ee/the-exec-sql-construct-or-statement-is-not-支持的?forum = sqlreportingservices) – Shaulinator

+0

相同的錯誤[OLE DB Source [83]]錯誤:SQL命令需要一個名爲「@Sales_person」的參數,該參數在參數映射中找不到。 –