17

asp.net mvc2アプリケーションにログ機能を実装しています。この機能は、データベースとしてSqlServer2008を使用し、データモデルとしてEntityFrameworkを使用します。

SqlServerのCDC機能を有効にすると、ログの変更がうまくいきますが、古いログデータの一部が消去されていることに気づきました。

CDCが記録を保持するデフォルトの期間を知っている人はいますか。また、それを無期限に設定する方法を知っている人はいますか。

4

3 に答える 3

33

デフォルトの保持値が4320分=72時間=3日であることを発見しました。

を使用して構成可能である必要があります

sp_cdc_change_job @job_type='cleanup', @retention=minutes

最大値は52494800(100年)です。指定する場合、値は正の整数でなければなりません。保持は、クリーンアップジョブに対してのみ有効です。

sp_cdc_change_jobプロシージャの詳細な説明へのリンクは次のとおりです

これが他の誰かにも役立つことを願っています:D。

于 2010-07-20T10:13:48.053 に答える
10

CDCデータを無期限に保持したい場合は、CDCクリーンアップジョブを無効にするだけです。

  1. SQL Server Management Studioを開き、データベースサーバーに接続します
  2. オブジェクトエクスプローラーで、「&lt; instance> | SQLServerエージェント| 仕事」</li>
  3. 「cdc。<データベース名>_cleanup」という名前のクリーンアップのジョブを見つけます。
  4. ジョブを右クリックして[無効にする]を選択します

オプションを見つける場所のサンプル画像は次のとおりです。

CDCクリーンアップを無効にする方法

クリーンアップジョブを無効にすると、CDCデータは特定の時間間隔の後に削除されなくなります。

于 2014-03-31T14:29:09.640 に答える
7

デフォルトでは、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
于 2018-10-01T22:15:14.743 に答える