初めまして!
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で質問しましょう!
似たような質問が見つかりました
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- MySQL 下の画像はSQLの4大命令の性質をまとめたものであるらしいです UPDATE INSERT DELE 1 2023/06/07 15:36
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- SQL Server AccessのInsertクエリのあとつづけてDeleteクエリを行いたいがSQLでどう書いたらいい 3 2023/05/27 14:12
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access VBA 読み取り専用かチェ...
-
PhpMyAdminで作成して実行せよ...
-
ユニオンクエリで繋げられるテ...
-
Access のリレーションシップで...
-
エクセルでテーブルの最終行が...
-
「マスタ」と「テーブル」の違...
-
重複データを除いてインポート
-
シャープレジスター エラーコード
-
不動産検索サイトのような複数...
-
Access 1レコードずつcsvで出力...
-
MAX値を条件にデータを取得する...
-
symfowareのSQL文in句をバッチ...
-
ホームページがGOOGLEにインデ...
-
続.ORACLEのSELECTのソートに...
-
行方向のデータを横に並べる
-
アクセス 日付抽出(年月のみ)...
-
SELECT時の行ロックの必要性に...
-
SQL Server 2000 - bulk insert
-
SQLの書き方(UPDATE文)
-
Accessのリンクテーブルについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS2007 フォーム 「バリア...
-
Access VBA [リモートサーバー...
-
Accessでクエリを完了できませ...
-
実行時エラー3086 削除クエリ...
-
ユニオンクエリで繋げられるテ...
-
Select ~ into ~ で作成した...
-
accessでSQL実行時のテーブル名...
-
大きなテーブルに対する問い合...
-
ACCESSのODBCリンクテーブルに...
-
VBAの実行時エラー'2522'について
-
Access Update文の副問い合わせ
-
Oracleデータベーストリガーの...
-
ACCESSにてテーブルをEXCEL形式...
-
PhpMyAdminで作成して実行せよ...
-
TRY CATCHでシステムエラーを検...
-
AccessのテーブルをSQL Server...
-
Access VBA 読み取り専用かチェ...
-
DB2 create tableコマンドでエ...
-
勤続年数の求め方
-
結合テーブルクエリPrimaryKey...
おすすめ情報