0

完全に一意のジョブとして実行するためのフォルダーに、多くの Transact-SQL (SQL 2005) スクリプトがあります。ファイル名(多くの* .sqlファイルを含むファイルシステムフォルダー)に基づいて順序付けられた方法で、それらを「スケジュールされたサブジョブ」(ワンクリック実行)として次々に実行したいと思います。

01_init_vars.sql
05_create_this_thing.sql
10_create_another_thing.sql
15_calculate_this_value_based_on_today_date.sql
20_create_that_thing.sql
25_summarize_finish.sql

すべての SQL スクリプトはデータベースの異なる部分で動作し、同じテーブルを使用することもありますが、異なるタイム スタンプで異なる「ロジック レベル」で動作します (つまり、最初に 1 つのスクリプトを実行し、次に別のスクリプトを実行する必要があります)。これらのスクリプトはすべて、最初のスクリプトで一度だけ設定し、それらを「SQL セッション変数」として使用したい「環境変数」を共有します。

DECLARE @Username NVARCHAR(100)
SET     @Username = 'Blahblahblah'

それらすべてをマージして実行するための Microsoft SQL Server Management Studio ツールがあるかどうか、または (私にとってはより良い) 実行するストアド プロシージャの例があるかどうか疑問に思っていました。

これらの「サブジョブ」の一部の内部にストアド プロシージャが存在する可能性があることに注意してください。ストアド プロシージャが定義され、他のストアド プロシージャ内で実行されることによる問題を防止したいと考えています。

この非常に単純な質問で申し訳ありませんが、Google にさまざまなキーワードで何度もクエリを実行した後、標準のトランザクション SQl ステートメント (MSDN Web サイト) を見た後、適切な答えを見つけることができません。 SQL データベースでタスクを実行する「通常の方法」ですが、おそらく何かが欠けていて、何が見つからないのでしょう。

ありがとう!

4

1 に答える 1

0

スクリプト間で変数を共有している場合は、おそらくSql Sever Integration Services (SSIS) を調査することをお勧めします。

スクリプト間のデータの流れを制御したり、実行順序の条件付き「ルーティング」を設定したり、このタスクにはおそらく必要ないその他の多くのことを行うことができます。

何らかの理由で SSIS を使用できない場合は、Sql Server エージェントで新しいジョブを作成し、各スクリプトをジョブの新しいステップとして追加してみませんか? ある結果を別の結果で使用するために保存する必要がある場合は、おそらく、ジョブの期間中これらの値を保持するテーブルを作成し、最終スクリプトでそれらを「途中で」削除するようにします。

于 2012-05-16T13:39:41.687 に答える