14

指定された時間に毎日実行する必要があるコードがあります。現在のコードは、私の Web アプリケーションの一部として座っています。コードが使用するデータを取得/保存するストアド プロシージャが 2 つあります。

Microsoft SQL Server Management Studio 2008 R2 をセットアップして、コードと SQL エージェント ジョブのストアド プロシージャを実行する方法を教えてください。これまでにこれを行ったことがなく、ドキュメントが見つからないようです。

4

3 に答える 3

18

最も簡単な方法は、.NET コンソール アプリケーションを作成することです。これは、実際のコードを DLL や Web サービスなどに配置するための単なるシェルです。次に、SQL エージェント ジョブで、コンソール アプリを呼び出す "オペレーティング システム (CmdExec)" タイプのステップを作成します。SSIS の手間を省きます (これは避けるべき大きな手間の 1 つです)。また、.NET proc が別の合理的な代替手段になる可能性があるという @Hasanain にも同意します。

もう1つ注意すべきことがあります。SQL Agent CmdExec は整数の戻りコードを探すのでpublic static int Main(string args[]) {}、成功の場合は 0 を返し、失敗の場合は負の数を返します。または、例外をスローすると、それも問題なく機能します。また、SQL エージェントは、コンソール アプリがそれを stdout/stderr に書き込んでいるため、投げたものからテキストをログに記録します。

于 2011-07-11T16:00:36.127 に答える
10

Sql Server Integration Services (SSIS)を読む必要があります。次に、SQL 機能の単位である SSIS パッケージをスケジュールできます。SSIS パッケージ内では、スクリプト ジョブを実行し、CLR (共通言語ランタイム - つまり .Net ジョブ) 関数を呼び出して .net コードを実行できます。

ただし、これについて少し後ろ向きに考えているかもしれません。SQL を呼び出すコード実行をスケジュールするために SSIS を使用する主な理由は何ですか? もしそうなら、Windows Workflow Foundation (WWF)を調査/使用することをお勧めします。これは、「長期的な」.net アクティビティを開発および実行するための .net フレームワークです。簡単なレベルでは、.Net プログラムの SSIS に相当すると考えることができます。SQL Server SSIS の知識がなくても、.Net アプリケーションに直接組み込むことができます。

最後に、アプリケーションが「非常に」単純な場合は、単純なコンソール アプリケーションでデータベース更新呼び出しをラップすることを検討することをお勧めします。そうすれば、Windows に組み込まれているタスク スケジューラを介してアプリケーションを呼び出すだけ で、特定の日/時間などに実行することができます。

于 2011-07-11T15:17:31.533 に答える