• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SSISのデータフロー内のSQLコマンドテキストで外部のパラメータを使う方法が分かりません)

SSISのデータフローで外部のパラメータを使用する方法

このQ&Aのポイント
  • SSISのデータフロー内で外部のパラメータを使用する方法について教えてください。
  • 制御フローのSQL実行タスクではパラメータを使うことができますが、データフロー内のSQLコマンドテキストではどのように使用するのか分かりません。
  • ご教授いただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.3

こういう手順でやってみてください。 ・SQLStateにダミーで値をセットしておく。  (実行時に入っているであろうSELECT文をセット) ・上記の状態でデータフローをセットアップする ・セットアップできたら、OLE DBソースのプロパティで「Validate ExternalMetadata」をFalseに変更する ・SQLStateをクリアする

junzo_ex
質問者

お礼

jamshid6 さま ありがとうございます! 無事、出来ました! すごくすごく、助かりました! 本当に、ありがとうございました!

その他の回答 (2)

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

>参考までに、以下のような事は出来ないのでしょうか?? >SELECT ? as Clm1, Clm2 FROM T_Data カラム名を動的に指定したいという意味ですか? パラメータは、SELECTのWHERE句、または、EXECのパラメータとしてしか評価されないので、その場所に指定することはできません。 (これは変数の値そのものをSELECTの結果に返したい場合でも同じことで、?は評価されません) その場合は「SQLコマンド」ではなく、「変数からのSQLコマンド」を使います。 直前にスクリプトタスクでも置いて、変数の中に組み上げたSELECT文をセットしてそれを実行させればよいです。

junzo_ex
質問者

補足

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)
回答No.1

>データフロー内のSQLコマンドテキストではこの表記が出来ないため、どのように記述すれば良いのか分からず困っております これはたとえばOLEデータソースのSQLコマンドテキストのことですか? SELECT Clm1, Clm2 FROM T_Data WHERE Date = ? こんな風に書けば、横のパラメータボタンを押したときに変数が指定できるようになってませんか?

junzo_ex
質問者

お礼

jamshid6さま 無事、出来ました!! ありがとうございます。 参考までに、以下のような事は出来ないのでしょうか?? SELECT   ? as Clm1,   Clm2 FROM   T_Data

junzo_ex
質問者

補足

jamshid6さま ご回答ありがとうございます。 なるほど、そのような記述があるのですね、、 試して、またご報告させて頂きます。