0

テーブルを反復処理するSSISパッケージがあり、テーブルの各行について、2つの異なる列の値をパラメーターとしてストアドプロシージャに渡します。少なくとも、それはそれがすることになっていることです。それが実際に行うことは、私にこのエラーを与えることです:

[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.

情報を取得する部分を作成するためにこのチュートリアルに従いました。ストアドプロシージャを実行するためのコードは次のとおりです。

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.

だから、本当に、同じエラー。

4

1 に答える 1

2

パッケージの設定方法によっては、SSIS変数をSQL実行タスク内のパラメーターにマップする必要がある場合があります。表示されている特定のエラーは、OLEDB接続を使用しているため、最も可能性が高く、ステートメントはおそらく次のようになります。

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

リンクした例に従っている場合は、User::mAccessLocationを最初と2番目のパラメーターにマップします。それが理にかなっていることを願っていますが、私はあなたがこれをどのように設定しているかについて100%ではありません。

于 2012-08-10T20:00:12.433 に答える