1

使用Visual Studio 2008和SQL Server 2008SSIS問題:存儲過程的參數/變量

使用OLE DB源OLE DB目標,我也有使用特定ID的幾個參數的存儲過程(例如@BUSINESS_AREA_ID = '32')。如果您想輸入所有可以使用-1的ID(例如@BUSINESS_AREA_ID = '-1')。

OLE DB SOURCE

Properties

這些變量設置爲VARCHAR(MAX)。當我在SQL Server中使用-1運行它時,它工作得很好並且返回了數千條記錄,但是當我在SSIS中設置存儲過程時,它運行得非常快(一切都是綠色的),但它寫入了0行。

我檢查了數據查看器,並沒有返回值,所以我認爲問題在於-1變量。我試圖使用每個數據類型(字符串,Int32等)設置變量,使用單引號,而不使用它們,轉換或截斷不是一個問題,等等....我卡住了。我建立了更多的存儲過程,並且它們都很好用,但它們不使用-1特性。有誰知道什麼可能是錯的?

謝謝大家。

+0

你是如何在SSIS中運行存儲過程的?你使用什麼組件(例如OLE DB源等) –

+1

可能是很多事情。你可以發佈一些SSIS任務或調用存儲過程的組件的屏幕截圖嗎?不是控制流程的截圖,而是該任務的屬性。 –

+0

我正在使用OLE DB源 - >數據轉換 - > OLE DB目標。使用數據查看器時,我發現沒有數據會將其傳送到數據轉換器。 「執行結果」選項卡顯示:[SSIS.Pipeline]信息:「組件」OLE DB目標「(1314)」寫入了0行。 –

回答

3

它看起來像你傳遞一個字符串'-1'而不是一個-1 INT所以確保你的變量設置爲一個字符串。

string variable BUSINESS_AREA_ID

一旦設置完畢後,請確保您的變量正確地映射到要傳遞到存儲過程中OLE DB Source的參數。確保遵循這種格式並更改存儲過程,參數和變量名稱。

Correct sproc maaping from http://geekswithblogs.net/stun/archive/2009/03/05/mapping-stored-procedure-parameters-in-ssis-ole-db-source-editor.aspx

+1

哦,在SSIS中傳遞參數的奇怪。雖然沒有命名參數(在文本中),但參數必須命名(在對話框中) –

+0

感謝您的迴應。我使用?映射參數並有參數名稱匹配。但是,我沒有與參數名稱匹配的變量名稱,因爲我不相信這個問題。絕對沒有錯誤或警告,它只寫零行,導致相信它不能識別字符串中的負數。我現在將添加屏幕截圖到這個問題。 –

+0

@BillStuart嘗試調用一個虛擬存儲過程,該過程在相同的OLE DB源中使用相同的'User :: Neg_One'變量返回一些'SELECT'結果。也嘗試重新創建OLE DB源組件。 –

0

set query parameters對話中,parameters列下,所有的參數名稱更改爲:

0 
1 
2 
3 
etc... 

,並確保該變量被分配到佔位符,它們出現的順序在你的查詢中。換句話說,參數0是查詢中的第一個參數,因此爲其分配適當的變量。