Web サーバーとデータベース サーバーがあり、既存の C# DLL を使用してデータベースにアクセスし、計算を実行するジョブを実行したいと考えています。
C# でコンソール アプリを作成し、それを Web サーバー (アプリ サーバー) でスケジュールして DB サーバーに対して実行する最も簡単な方法はありますか?
オプションとして SSIS があると思いますが、よくわからないので、タスクとしてスケジュールされたコンソール アプリが最適であると考えました。
どう思いますか?
Web サーバーとデータベース サーバーがあり、既存の C# DLL を使用してデータベースにアクセスし、計算を実行するジョブを実行したいと考えています。
C# でコンソール アプリを作成し、それを Web サーバー (アプリ サーバー) でスケジュールして DB サーバーに対して実行する最も簡単な方法はありますか?
オプションとして SSIS があると思いますが、よくわからないので、タスクとしてスケジュールされたコンソール アプリが最適であると考えました。
どう思いますか?
私は、コンソール アプリ + スケジュールされたタスク アプローチの大ファンです。クリーンで、テストしやすく、問題が発生した場合の再実行が容易になる傾向があります。とはいえ、純粋な SQL で計算を記述できる場合は、すべてを SQL ジョブとして実行できます。または、SQLCLR (SQL Server 内に存在し、基本的に sproc または UDF として表示される .NET アセンブリ) を利用して、SQL ジョブ エンジン内ですべてを実行することもできます。
仕事が非常にマイナーな場合は、そのために別のコンソールアプリケーションを作成する必要はありません。ページを個別に記述し、バッチファイル、つまりスケジューラを同じように記述してスケジュールすることができます。ウィンドウのユーザーインターフェイスからスケジュールすることもできます。それとは別に、あなたの仕事がメンテナンスプランの計画/ステップ(インデックスの再作成、データベースのバックアップの作成、デフラグ、履歴/ログのクリーンアップなど)である場合は、SQLサーバーの[管理]の下にメンテナンスプランを作成します"フォルダが利用可能です。
はい、最も簡単な解決策は、別のコンソール アプリを作成し、それをスケジュールされたタスクとして実行することです。
Web サーバーにアクセスでき、すべてのツールが既に配置されており、他に何もインストールする必要はありません。
コンソール アプリ内でスケジューリングに Quartz.NET ライブラリ (quartznet.sourceforge.net) を使用できます。これはオープン ソースであり、完全に機能します。
PowerShell スクリプトから C# DLL を呼び出し、そのスクリプトをスケジュールされたタスクとして実行することもできます。
バックグラウンドでの即時アクションが必要な操作については、プロジェクトごとにサービスを用意することを好みます。