2012-03-01 65 views
2

我在我的包中定義了一個執行sql任務,它將執行存儲過程。當存儲過程執行時,它將返回用戶憑證。我必須將憑證存儲在一個變量中,然後在新的腳本任務中使用這些憑證。使用執行SQL任務對象將值存儲在變量中

以下是我到目前爲止所嘗試的。

STEP 1 - 我已經創建SQL任務

在常規選項卡中設置以下屬性:

Resultset: Single row 
connectionType: OLE DB 
Connection:SourceDestination 
SQLSourceType:DirectInput 
SQLStatement: Execute dbo.GetLoginInfo1 
ByPassPrepare = False 

第2步 - 參數映射選項卡

Variable Name = User::DatabaseUserName 
Direction = Output 
Data Type = NVarchar 
Parameter Name = @UserId 
Parameter Size = 50 

第3步 - 結果集選項卡

Result Name = 0 
Variable Name = User::DatabaseUserName 

當我執行我得到了以下錯誤的任務。

[Execute SQL Task] Error: Executing the query "EXECUTE [dbo].[GetUserLoginInfo1]" 
failed with the following error: "Value does not fall within the expected range." 
Possible failure reasons: Problems with the query, "ResultSet" property not set 
correctly, parameters not set correctly, or connection not established correctly 

當我調試我看到以下信息: 打破前執行:

User::DatabaseUserName = {Hi} 

打破後執行:(錯誤發生,但價值得到chanage)

User::DatabaseUserName = {User1} 

對不起,只是忘了提及變量的創建。我已經創建了一個如下所示的變量。

Name = DatabaseUserName 
Scope = Package1 
Datatype = String 
Value = Hi 

下面提到的是我用過的存儲過程。

ALTER PROCEDURE [dbo].[GetUserLoginInfo1] 
AS 
BEGIN 
    SELECT userid AS userid 
    FROM login_credentials 
    WHERE servername= 'server1' 
END 

我曾嘗試和閱讀很多很多網站,但我依然面臨着problem.This是我第二天就可以了,並有明天早上之前解決它,所以任何幫助將是非常讚賞。

回答

1

您應該完全省略STEP2。 (但是,您的程序沒有任何輸出列。)

步驟1和步驟3都沒問題。 (在STEP 3中,您可以在網格的結果名稱列中使用userid,但序號絕對是好的。)

+0

非常感謝viktor。我們非常感謝您的幫助。 – 2012-03-01 14:15:08

相關問題