Dynamics CRM のバックグラウンドジョブである削除サービス(Deletion Service) と インデックス再作成サービス(Re-Index Service) の実行時間をスケジュールする方法を紹介します。

動作確認は、 Windows Server 2003 Enterprise Edition 上にオールインワンで構築した AD 認証(設置型) Dynamics CRM で行っています。

今回スケジュール設定を行うために次のページからダウンロードできるツールScaleGroupJobUpdate.exeを使用します。

- CRM 4 ScaleGroup Job Editor 
http://code.msdn.microsoft.com/ScaleGroupJobEditor

1. Deletion Service, Re-Indexing Service のスケジュールを設定する

Dynamis CRM のEntity データは CRMの画面から削除を行ってもすぐに物理削除されません。各BaseテーブルのDeletionStateCode が 0 から非0 の値に設定されます。論理削除されたレコードは削除サービス(Deletion Service) によって削除されます。

Deletion Service が動作するとパフォーマンスが低下する可能性があります。既定では、Deletion Service と Re-Index Service はインストールされた時間の24時間ごとに実行されます。通常はスケジューリングすることはできませんが、本ページの冒頭で紹介した ScaleGroup Job Editor をCRMサーバのインストールされたサーバ上で実行することで、下図のように、Deletion Service と Re-Index Service の実行スケジューリングを設定することができます。

削除サービスは大量にデータを削除していると、パフォーマンス低下の原因となりますので、CRMを使用するユーザに影響のない時間帯に動作するようにスケジュールしたほうがよいでしょう。

AsyncOperationBase テーブルレコードに対する削除サービスの削除処理でパフォーマンスが低下するKBがありましたので、リンクを張っておきます。

- パフォーマンスが低下する、AsyncOperationBase テーブルが Microsoft Dynamics CRM 4.0 では大きすぎる場合(日本語翻訳) 
http://support.microsoft.com/kb/968520/ja
- Performance is slow if the AsyncOperationBase table becomes too large in Microsoft Dynamics CRM 4.0 
http://support.microsoft.com/kb/968520/en-us

Deletion ServiceとRe-Index サービスのスケジュール設定はどこにあるのかですが、MSCRM_CONFIGデータベースのテーブル dbo.ScaleGroupOrganizationMaintenanceJobs に存在します。レコードの中でOperationType が 14 が削除サービスのスケジュール設定です。15がRe-Indexサービスのスケジューリング設定です。 dbo.ScaleGroupOrganizationMaintenanceJobs のLastRunTIme が最後に非同期サービスによって実行された時間,NextRunTime が次にサービス起動される時間です。起動時間はUTC時間なので注意してください。

2. まとめ

説明は以上です。Deleteion Service と Re-Index Service は起動するとパフォーマンスが低下し、しかもインストールした時間に動作するので、スケジュールを設定する必要性は高いと思います。

誤り、指摘点などがありましたらご連絡ください。