質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.32%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Q&A

0回答

217閲覧

DB内の稼働日カレンダ情報(テーブル)を参照して、データ連携処理の起動・非起動を見極めたい

saya24

総合スコア250

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

0グッド

1クリップ

投稿2025/02/26 08:24

編集2025/02/26 08:36

実現したいこと

SQLServerに、DB内の各種テーブルから データ抽出してクラウド環境向けにデータ連携する定刻処理を構築しました。
SQLServerのジョブの機能を活用した定刻処理の確立でしたが、実行する曜日を前もって指定できても、国民の祝祭日を非動作にする設定ができない 悩ましい問題に直面しています。

ちなみに、当社の営業日は 同SQLServer内のあるテーブルに格納されています。
つまり、このテーブルには 国民の祝祭日のレコードは 登録されていない状況です。

発生している問題・分からないこと

先に記載した 営業日のみが蓄積されたテーブルを参照して、連携データ作成・所定ファルダへの配置を達成する本質処理へ遷移する・しない みたいな挙動を達成したいのですが
どういった手はずで 対処すればよいのか 私 わからくて...。

単純に今回言及した処理内先頭で、当該テーブルに対し 実行日を指定した SELECT発行を行い、レコード結果を得られない場合は 当該一連処理を終えてしまうようにすればよいのでしょうが その手立てがわかりません(現在ジョブから起動している当該の処理は SSIS:SQL Server Integration Services の技術です)

実行日を指定して、当該テーブルを参照しレコード検知できたか否かの戻り値を返す これ用途の別プログラムを用意しなければならない、ということでしょうか??

当該テーブルから実行日のレコードを得られた場合に限り、あるテキストファイルを作るようにしてこのファイルの存在・不存在で 本質処理の進行を判断できる・できないようにすることもできるかな、とか考えしたが、レコード得られずとも空ファイルが仕上がっていまうかな とか思い出していて... 

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

自分の調べ方がわるいのか 参考になる記事をみつけることができませんでした。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2025/02/26 23:55

> どういった手はずで 対処すればよいのか 私 わからくて...。 悩んでいるのは分かりますが、扱っている処理の全体のフローが比較的大きいせいなのか、ご質問の焦点が読んだ者にはどうもわかりづらいように思います。 > (現在ジョブから起動している当該の処理は SSIS:SQL Server Integration Services の技術です) この質問は、このSSISの枠組みの中でどう対応(操作)したらよいのか?と言う質問なのでしょうか。 > 当該テーブルから実行日のレコードを得られた場合に限り、あるテキストファイルを作るようにしてこのファイルの存在・不存在で 本質処理の進行を判断できる・できないようにすることもできるかな、とか考えしたが、レコード得られずとも空ファイルが仕上がっていまうかな とか思い出していて...  * 空ファイルができてしまうことに問題がありますか? * レコードがあればそれらレコードのデータなり、件数なりが得られるはずなので、0件(空)であれば実行しない、1件以上あれば実行する、との判定になるのでは? * また、そもそもレコードの件数で判定できるのであれば、ファイルを出力しなくても良いのでは? SSISの枠組みの中では判定できないのでしょうか? 実行条件が満たされれば後段のジョブ、タスクを続けて実行するが、実行条件が満たされなければ後段のジョブ、タスクを実行してはいけないのか、あるいは0件でもそのまま後段まで実行して支障はない作りになっているのか、等、質問者さんの会社のシステムの仕様は分からないので、その辺りは質問の記載内容から判断つきません。 SSISに知見のある方ならばまた有益なコメント、回答を得られるのかもしれませんが、恐らくもう少し粒度の細かい質問にした方が良いかと思います。
dodox86

2025/02/27 00:04

> 国民の祝祭日を非動作にする設定ができない 悩ましい問題に直面しています。 > > ちなみに、当社の営業日は 同SQLServer内のあるテーブルに格納されています。 > つまり、このテーブルには 国民の祝祭日のレコードは 登録されていない状況です。 国民の祝祭日が御社の営業日に重なっている場合は動作を停めたい、と言うことであれば、そこは何らかの方法で国民の祝祭日のデータを取り入れる「新しい」処理が必要になるはずです。 そこは避け得ない対応ではないでしょうか。
saya24

2025/02/28 14:02

dodox86さん、ご見解ありがとうございます。 SSISに関して自分の所有ノウハウでは 内部では正常か異常ぐらいの分岐しかできない認識のため、どういう手立てがあるのかを今回尋ねました。 やはりべつの把握手続きを用意しなければならないんですかねぇ もう少し見解を募集し続けてみて、様子をみます。
YAmaGNZ

2025/02/28 15:08

営業日のみが蓄積されたテーブルを参照してその営業日のみ処理を行いたいということなのでしょうか? そうなると国民の休日は関係ないのではないですか? とりあえず営業日のみに実行したいのであれば、そのようなストアドを組んで定期実行すればいいのではないですか?
saya24

2025/03/02 01:27 編集

@YAmaGNZ様 ご見解ありがとうございます。 すでにSSISで一連の仕組みが仕上がっており、SQLServerのジョブですでに運用中であることで、自分の中で大胆に作直す気になれない気持ちがある=大規模な対策へ踏切る邪魔をしてしまっているんですよね 動作する際の挙動としては万全なので、これをキャンセルするための制御を外部か内部の追加作業で 行えないものかなぁ という若干怠け者な問合せなんです、すみません。 でも、@YAmaGNZ様から頂きました見解で、SSISのなかで SQLServer内のストアドプロシージャをタスク起動するのは ありかも=このストアドが 非稼働日判断だったら、当該タスクのリターンコードを異常報告して、SSIS内部の本質処理へうつっていかないようにすることができるかもしれない! と思い始めています。 結局は 稼働・非稼働次第で、リターンコードで戻す別プログラムを用意することに変わりありませんが、ストアドであれば DBに近いイメージなので 自分の中では達成容易な 印象をおもい描いているんです。 貴重なヒントを頂き ありがとうございます。(ストアド内で非稼働日だったら TRY~CATCHの中で 強引に異常終了する動作をすればいいかなぁとか考えています)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.32%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問