- ベストアンサー
SSISのデータフローで外部のパラメータを使用する方法
- SSISのデータフロー内で外部のパラメータを使用する方法について教えてください。
- 制御フローのSQL実行タスクではパラメータを使うことができますが、データフロー内のSQLコマンドテキストではどのように使用するのか分かりません。
- ご教授いただけると助かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こういう手順でやってみてください。 ・SQLStateにダミーで値をセットしておく。 (実行時に入っているであろうSELECT文をセット) ・上記の状態でデータフローをセットアップする ・セットアップできたら、OLE DBソースのプロパティで「Validate ExternalMetadata」をFalseに変更する ・SQLStateをクリアする
その他の回答 (2)
- jamshid6
- ベストアンサー率88% (591/669)
>参考までに、以下のような事は出来ないのでしょうか?? >SELECT ? as Clm1, Clm2 FROM T_Data カラム名を動的に指定したいという意味ですか? パラメータは、SELECTのWHERE句、または、EXECのパラメータとしてしか評価されないので、その場所に指定することはできません。 (これは変数の値そのものをSELECTの結果に返したい場合でも同じことで、?は評価されません) その場合は「SQLコマンド」ではなく、「変数からのSQLコマンド」を使います。 直前にスクリプトタスクでも置いて、変数の中に組み上げたSELECT文をセットしてそれを実行させればよいです。
補足
jamshid6さま こちらもご回答ありがとうございます。 >カラム名を動的に指定したいという意味ですか? はい、おっしゃるとおりです! そして、そもそもの質問からズレてしまっており、 大変恐縮なのですが、あとこの部分だけご教授頂けないでしょうか・・・? ------------------------------------------- 以下のスクリプトで、 変数からのSQLコマンドにUser:SqlState をセットしたところ、 "CommandオブジェクトのCommandテキストが設定されていません" とエラーになってしまいます。。 <スクリプトメイン> Public Sub Main() Dim sqlState As String 'SQL文を設定 sqlState = "SELECT Clm1," & "'" & Dts.Variables("ReadDate").Value.ToString & "' as Clm2 FROM T_Data" Dts.Variables("SqlState").Value = sqlState Dts.TaskResult = Dts.Results.Success End Sub 変数:ReadDate スコープ:全体 データ型:String 値:空っぽ ⇒"yyyymmdd"の値を入れる(このスクリプトタスクに辿り着く時点で入っている) 変数名:SqlState スコープ:全体 データ型:String 値:空っぽ ⇒SQL文を入れる このほか、 Imports System.Data.SqlClient を使い、 CommandText に値を入れてみたりしたのですが、 やはりダメでした。。 ※ちなみに、このスクリプトタスクまではエラーにならず動作します。 ------------------------------------------- 以上、よろしくお願い致します・・・!
- jamshid6
- ベストアンサー率88% (591/669)
>データフロー内のSQLコマンドテキストではこの表記が出来ないため、どのように記述すれば良いのか分からず困っております これはたとえばOLEデータソースのSQLコマンドテキストのことですか? SELECT Clm1, Clm2 FROM T_Data WHERE Date = ? こんな風に書けば、横のパラメータボタンを押したときに変数が指定できるようになってませんか?
お礼
jamshid6さま 無事、出来ました!! ありがとうございます。 参考までに、以下のような事は出来ないのでしょうか?? SELECT ? as Clm1, Clm2 FROM T_Data
補足
jamshid6さま ご回答ありがとうございます。 なるほど、そのような記述があるのですね、、 試して、またご報告させて頂きます。
お礼
jamshid6 さま ありがとうございます! 無事、出来ました! すごくすごく、助かりました! 本当に、ありがとうございました!