基本的に、一定の日数が経過するとアーカイブされたレコードを削除するアーカイブ プロセスがあります。削除を実行するには、スケジュールされた SQL ジョブまたは Windows サービスを作成する方が良いですか? データベースは mssql2005 です。
アップデート:
以下の回答のいくつかについて言えば、この質問は社内アプリケーションに関するものであり、配布された製品に関するものではありません。
基本的に、一定の日数が経過するとアーカイブされたレコードを削除するアーカイブ プロセスがあります。削除を実行するには、スケジュールされた SQL ジョブまたは Windows サービスを作成する方が良いですか? データベースは mssql2005 です。
以下の回答のいくつかについて言えば、この質問は社内アプリケーションに関するものであり、配布された製品に関するものではありません。
それはあなたが達成したいことに依存します。削除したアーカイブをどこかに保存しますか? 変更をログに記録しますか? SQL ジョブはデータベースで直接実行されるためパフォーマンスが向上しますが、サービスにデータベース外のリソースへのアクセス権を付与する方が簡単です。なので、やりたいこと次第ですが、、、
データベースが新しいマシンに移行された場合、移行を行っている誰かが Windows サービスが関係していることを忘れて、新しいサーバーでそれを開始/インストールするのを忘れる可能性があるため、スケジュールされた SQL ジョブがより安全なソリューションになると思います。
これまで、多数の SQL ジョブを実行してきました。ただし、最近では、Windows スケジュール タスクから実行されるクライアント アプリケーションとして .Net コードからこれらのプロセスを呼び出す方法に移行しています。これには、次の 2 つの理由があります。
どのように行うかに関係なく、このタスクにはサービスが必要ないことに注意してください。サービスは終日実行され、サーバーの RAM を終日消費します。
これには、実行する必要があるタスクがあり、1 日 1 回、毎日実行します。そのため、SQL Server でジョブを実行するか、Joel が説明したように、スケジュールに従って実行してサーバーのメモリ空間からアンロードするようにセットアップされたアプリケーション (コンソールまたは winforms) が必要です。
これはあなた/社内向けですか、それともあなたが配布する製品の一部ですか。
社内の場合は、SQL の仕事だと思います。それもまた別のサービスです。
配布する製品の一部である場合、インストールとサポートがどのようになるかを検討します。
Corey の指摘に従うと、これが外部に配布されている場合、SQL Express をサポートする必要がありますか? そうでない場合は、SQL ジョブを直接使用します。それ以外の場合は、SQL Express には SQL 2005 (および MSDE) のフル バージョンに付属する SQL エージェントがないため、より創造的になる必要があります。SQL エージェントがなければ、ジョブを自動的に起動する別の方法が必要になります。これは、Windows サービス、スケジュールされたタスク (.NET アプリ、powershell スクリプト、VBscript などの呼び出し)、または SQL Server に何らかのトリガーを直接実装しようとする可能性があります。