9

基本的に、一定の日数が経過するとアーカイブされたレコードを削除するアーカイブ プロセスがあります。削除を実行するには、スケジュールされた SQL ジョブまたは Windows サービスを作成する方が良いですか? データベースは mssql2005 です。

アップデート:

以下の回答のいくつかについて言えば、この質問は社内アプリケーションに関するものであり、配布された製品に関するものではありません。

4

6 に答える 6

8

それはあなたが達成したいことに依存します。削除したアーカイブをどこかに保存しますか? 変更をログに記録しますか? SQL ジョブはデータベースで直接実行されるためパフォーマンスが向上しますが、サービスにデータベース外のリソースへのアクセス権を付与する方が簡単です。なので、やりたいこと次第ですが、、、

于 2008-10-30T15:13:09.230 に答える
7

データベースが新しいマシンに移行された場合、移行を行っている誰かが Windows サービスが関係していることを忘れて、新しいサーバーでそれを開始/インストールするのを忘れる可能性があるため、スケジュールされた SQL ジョブがより安全なソリューションになると思います。

于 2008-10-30T15:13:23.270 に答える
5

これまで、多数の SQL ジョブを実行してきました。ただし、最近では、Windows スケジュール タスクから実行されるクライアント アプリケーションとして .Net コードからこれらのプロセスを呼び出す方法に移行しています。これには、次の 2 つの理由があります。

  1. この方法でロギングなどの機能を実装する方が簡単です。
  2. データベースで実行されない他のバッチ ジョブがあるため、Windows のスケジュールされたタスクに含まれている必要があります。このようにして、あらゆる種類のすべてのバッチ ジョブが 1 か所に一覧表示されます。
于 2008-10-30T15:13:51.790 に答える
2

どのように行うかに関係なく、このタスクにはサービスが必要ないことに注意してください。サービスは終日実行され、サーバーの RAM を終日消費します。

これには、実行する必要があるタスクがあり、1 日 1 回、毎日実行します。そのため、SQL Server でジョブを実行するか、Joel が説明したように、スケジュールに従って実行してサーバーのメモリ空間からアンロードするようにセットアップされたアプリケーション (コンソールまたは winforms) が必要です。

于 2008-10-30T15:19:42.010 に答える
1

これはあなた/社内向けですか、それともあなたが配布する製品の一部ですか。

社内の場合は、SQL の仕事だと思います。それもまた別のサービスです。

配布する製品の一部である場合、インストールとサポートがどのようになるかを検討します。

于 2008-10-30T15:14:33.487 に答える
0

Corey の指摘に従うと、これが外部に配布されている場合、SQL Express をサポートする必要がありますか? そうでない場合は、SQL ジョブを直接使用します。それ以外の場合は、SQL Express には SQL 2005 (および MSDE) のフル バージョンに付属する SQL エージェントがないため、より創造的になる必要があります。SQL エージェントがなければ、ジョブを自動的に起動する別の方法が必要になります。これは、Windows サービス、スケジュールされたタスク (.NET アプリ、powershell スクリプト、VBscript などの呼び出し)、または SQL Server に何らかのトリガーを直接実装しようとする可能性があります。

于 2008-10-30T15:34:58.533 に答える