2012-08-10 32 views
0

我有一個SSIS包,它遍歷一個表,併爲表中的每一行,將兩個不同列的值作爲參數傳遞給存儲過程。至少,這是它應該做的。它實際上做的是給我這個錯誤:引用SSIS包中的變量

[Execute SQL Task] Error: Executing the query "EXEC sproc_AccessImport @mAccessLocation (SELECT M..." failed with the following error: "Must declare the scalar variable "@mAccessLocation".". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly. 

我爲了使該抓住信息的一部分跟着this tutorial,而應該執行存儲過程的代碼是:

EXEC sproc_AccessImport @mAccessLocation (SELECT MVID FROM tbl_AccessMailDataFiles WHERE FileLocation = @mAccessLocation) 

我一直在網上尋找,但沒有發現任何有用的東西。這是我第一次使用SSIS,所以我懷疑我只是做錯了什麼。有誰知道究竟是什麼?謝謝。

編輯:我試圖映射的變量作爲參數,與選項:

Variable Name: User::mAccessLocation 
Direction:  Input 
Data Type:  VARCHAR 
Parameter Name: Path 
Parameter Size: 200 

,改變了SQL查詢:

EXEC sproc_AccessImport @Path (SELECT MVID FROM tbl_AccessMailDataFiles WHERE FileLocation = @Path) 

現在給我的錯誤:

[Execute SQL Task] Error: Executing the query "EXEC sproc_AccessImport @Path (SELECT MVID FROM tb..." failed with the following error: "Must declare the scalar variable "@Path".". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly. 

所以,真的,同樣的錯誤。

回答

2

根據您的軟件包設置方式,您可能需要將SSIS變量映射到執行SQL任務中的參數。您所看到的特定的錯誤是最liklely因爲你使用的是OLEDB連接和statment也許應該讀

EXEC sproc_AccessImport ? (SELECT MVID FROM tbl_AccessMailDataFiles WHERE FileLocation = ?) 

如果你正在跟蹤您鏈接到的例子,那麼你會在用戶:: mAccessLocation映射到第一和第二個參數。我希望這是有道理的,但我不是100%的你如何設置。

+0

我編輯了我的答案並提供了答案,因爲它比試圖將它置於評論中更容易。如果有任何其他信息可以幫助,請告訴我。我不確定哪些會有所幫助。 – SaintWacko 2012-08-10 20:08:20

+0

即使您在執行SQL任務的屬性中聲明瞭名稱,參數仍應該由?用於OLEDB連接。 – SQLMD 2012-08-10 20:32:28

+0

啊,好的。這很奇怪。那麼,現在它說'[執行SQL任務]錯誤:執行查詢「EXEC sproc_AccessImport?(SELECT MVID FROM tbl_Ac ...」失敗,出現以下錯誤:「沒有爲一個或多個必需參數給出值」。聽起來像它可能是一個抓取數據的問題, – SaintWacko 2012-08-10 20:36:37