2012-03-01 6 views
2

ストアドプロシージャを実行する私のパッケージにexecute sqlタスクが定義されています。ストアドプロシージャが実行されると、ユーザーの資格情報が返されます。変数に資格情報を格納し、これらの資格情報を新しいスクリプト・タスクで使用する必要があります。Execute SQLタスクオブジェクトを使用して変数に値を格納する

以下は私が今まで試したことです。

STEP 1 - 私が作成したSQLタスク[全般]タブで

は、次のプロパティを設定します。

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

STEP 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 

私は、以下の情報を見てみましたデバッグ:事前に実行ON ブレイク:

User::DatabaseUserName = {Hi} 

ポストONブレーク実行します(エラーが発生したが、値がchanageを取得します)

User::DatabaseUserName = {User1} 

申し訳ありません、変数の作成について言及することを忘れてしまいました。私は以下のように1つの変数を作成しています。

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ではグリッドのResult Name列にuseridを使用できますが、序数は絶対に良いでしょう)

+0

ありがとうございますviktor。あなたの助けが大いに評価されました。 –

関連する問題