asp.net mvc2アプリケーションにログ機能を実装しています。この機能は、データベースとしてSqlServer2008を使用し、データモデルとしてEntityFrameworkを使用します。
SqlServerのCDC機能を有効にすると、ログの変更がうまくいきますが、古いログデータの一部が消去されていることに気づきました。
CDCが記録を保持するデフォルトの期間を知っている人はいますか。また、それを無期限に設定する方法を知っている人はいますか。
asp.net mvc2アプリケーションにログ機能を実装しています。この機能は、データベースとしてSqlServer2008を使用し、データモデルとしてEntityFrameworkを使用します。
SqlServerのCDC機能を有効にすると、ログの変更がうまくいきますが、古いログデータの一部が消去されていることに気づきました。
CDCが記録を保持するデフォルトの期間を知っている人はいますか。また、それを無期限に設定する方法を知っている人はいますか。
デフォルトの保持値が4320分=72時間=3日であることを発見しました。
を使用して構成可能である必要があります
sp_cdc_change_job @job_type='cleanup', @retention=minutes
最大値は52494800(100年)です。指定する場合、値は正の整数でなければなりません。保持は、クリーンアップジョブに対してのみ有効です。
sp_cdc_change_jobプロシージャの詳細な説明へのリンクは次のとおりです
これが他の誰かにも役立つことを願っています:D。
CDCデータを無期限に保持したい場合は、CDCクリーンアップジョブを無効にするだけです。
オプションを見つける場所のサンプル画像は次のとおりです。
クリーンアップジョブを無効にすると、CDCデータは特定の時間間隔の後に削除されなくなります。
デフォルトでは、3日より古いものはすべて削除されます。デフォルト値を14日に変更するには、次のスクリプトを使用します。
use <Your database>
go
SELECT ([retention])/((60*24)) AS Default_Retention_days ,*
FROM msdb.dbo.cdc_jobs
go
EXEC <Your database>.sys.sp_cdc_change_job
@job_type=N'Cleanup'
,@retention=20160 -- <60 min *24 hrs * 14 days >
go
SELECT ([retention])/((60*24)) AS Default_Retention_days ,*
FROM msdb.dbo.cdc_jobs
Go