指定された時間に毎日実行する必要があるコードがあります。現在のコードは、私の Web アプリケーションの一部として座っています。コードが使用するデータを取得/保存するストアド プロシージャが 2 つあります。
Microsoft SQL Server Management Studio 2008 R2 をセットアップして、コードと SQL エージェント ジョブのストアド プロシージャを実行する方法を教えてください。これまでにこれを行ったことがなく、ドキュメントが見つからないようです。
指定された時間に毎日実行する必要があるコードがあります。現在のコードは、私の Web アプリケーションの一部として座っています。コードが使用するデータを取得/保存するストアド プロシージャが 2 つあります。
Microsoft SQL Server Management Studio 2008 R2 をセットアップして、コードと SQL エージェント ジョブのストアド プロシージャを実行する方法を教えてください。これまでにこれを行ったことがなく、ドキュメントが見つからないようです。
最も簡単な方法は、.NET コンソール アプリケーションを作成することです。これは、実際のコードを DLL や Web サービスなどに配置するための単なるシェルです。次に、SQL エージェント ジョブで、コンソール アプリを呼び出す "オペレーティング システム (CmdExec)" タイプのステップを作成します。SSIS の手間を省きます (これは避けるべき大きな手間の 1 つです)。また、.NET proc が別の合理的な代替手段になる可能性があるという @Hasanain にも同意します。
もう1つ注意すべきことがあります。SQL Agent CmdExec は整数の戻りコードを探すのでpublic static int Main(string args[]) {}
、成功の場合は 0 を返し、失敗の場合は負の数を返します。または、例外をスローすると、それも問題なく機能します。また、SQL エージェントは、コンソール アプリがそれを stdout/stderr に書き込んでいるため、投げたものからテキストをログに記録します。
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 に組み込まれているタスク スケジューラを介してアプリケーションを呼び出すだけ で、特定の日/時間などに実行することができます。