
初めまして!
SSISの変数利用について 教えて頂きたいので よろしくお願いいたします。
SSISの変数に入った値をSQL実行タスクの SQLStatementで利用することは
できませんでしょうか?
具体的に何をやりたいかと言いますと
データを取り込む為に一時テーブルを使います。
SQL実行タスクで一時テーブルを作成して、
データを取り込み、処理後に一時テーブルを削除します。
素人考えで、もしほぼ同時にパッケージが実行された場合に
一時テーブルの名前がカブっていると不具合の元にならないかと思いました。
そこで、変数の値でテーブル名を動的につけられればと思ったのですが、
変数に入れた値を、
色々調べてみたのですが SQL実行タスクエディタのSQLStatementでどう呼び出せばよいのか分かりません。
例えば、以下のような文で##test_table の部分を変数で指定することはできないのでしょうか?
CREATE TABLE ##test_table(
[CD] VARCHAR(10),
[NAME] VARCHAR(20)
)
GO
お手数ですが、ぜひ教えてください。
SSISを始めたばかりで 考え方自体がおかしいのかも知れません・・・。
その場合は本当に申し訳ありません
どうぞよろしくお願いいたします!
No.1ベストアンサー
- 回答日時:
変数をSQL実行タスクで使う場合は、タスクのプロパティのExpressionから設定をします。
変数名がTABLENAMEとすると、SQLStatementSourceに以下のように登録します。
"CREATE TABLE [" + @[User::TABLENAME] + "] ([CD] VARCHAR(10),[NAME] VARCHAR(20))"
これでTABLENAMEに入った変数のテーブル名で作成できます。
##test_tableを使ったSSISパッケージを複数同時に実行した場合、不具合が起こる可能性があるというのは正しいと思います。
それはグローバルの一時テーブルを使っているからで、ローカルの一時テーブルにすれば問題ないはずです。
#を1つ落として、#test_tableにすればよいと思います。タスク設定画面では選べないので、SQL実行タスクのプロパティから直接変更します。
>SSISを始めたばかりで 考え方自体がおかしいのかも知れません・・・。
全然おかしくはないです。ただ、SSISパッケージを複数パラレルで実行させるようなデザインは避けられるなら避けた方がいいと思います。
この回答への補足
早速ご丁寧な回答、ほんとうに本当にありがとうございます!!
試してみましたところ、ばっちり変数の値で一時テーブルを作ることができました!
その後、ファイルを取り込むOLEDB変換先の変数での指定にはまりましたが、
カスタムプロパティの
ACCESSMODEをVariableからOpenRowsetとし、
OpenRowsetVariableに変数を指定して、取り込みに成功しました!!
勉強が足りなくて、検証に時間がかかってしまい、お礼が遅くなってしまってすみませんでした。
本当に助かりました。
お聞きしなかったら、いつまでもハマっていたと思います。
でも、教えていただいた通り、
ローカルの一時テーブルで作成するほうがずっとスマートな気がします。
こちらも試してみたら、思い通りに動きました!
実は SSISはタスク間でやり取りするからグローバルでなければ駄目なのかと
思い込んでいました。。。
ホントに理解できてなくてお恥ずかしいです。
やりたい事を効率的に出来るようになるには まだまだだと思いますが、
頑張りますっ
本当にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access VBA [リモートサーバー...
-
ACCESS2007 フォーム 「バリア...
-
Accessでクエリを完了できませ...
-
SSIS 変数の値をSQL実行タスク...
-
重複するキーから一番古い年月...
-
SI Object Browserのテーブルス...
-
SQLServerで同一条件レコードの...
-
アクセスのテーブルからエクス...
-
時系列データの抜けの調べ方
-
既に使用されているので、使用...
-
SQLスクリプトを自動生成する方法
-
bcpインサートでのフォーマ...
-
DBMAGICのプログラム解析
-
ACCESS-リンクテーブルの設定で...
-
sqlplusでバックスペースが効か...
-
あるテーブルのデータを追加、...
-
ユニオンクエリの結果をテーブ...
-
Access カレントレコードがあり...
-
ボタンをクリックした回数をカ...
-
ExcelからAccess2013DBを更新す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS2007 フォーム 「バリア...
-
Access VBA [リモートサーバー...
-
Accessでクエリを完了できませ...
-
ACCESSのODBCリンクテーブルに...
-
大きなテーブルに対する問い合...
-
VBAの実行時エラー'2522'について
-
テーブル作成後なんですが、Pri...
-
accessでSQL実行時のテーブル名...
-
実行時エラー3086 削除クエリ...
-
Select ~ into ~ で作成した...
-
アクセスのワークシート変換に...
-
ユニオンクエリで繋げられるテ...
-
インデックスを調べる方法は?
-
AccessのテーブルをSQL Server...
-
PhpMyAdminで作成して実行せよ...
-
Access Update文の副問い合わせ
-
TRY CATCHでシステムエラーを検...
-
Access VBA 読み取り専用かチェ...
-
SQL Serverのテーブルってどう...
-
SSIS 変数の値をSQL実行タスク...
おすすめ情報