3

SQLServer2008データベースのいくつかのテーブルでCDCを有効にしました。変更履歴を保持できる日数を変更したい。

sys.sp_cdc_cleanup_change_tableストアドプロシージャによって削除される前に、デフォルトで変更ログが3日間保持されることを読みました。

ログをより長く保持できるように、このデフォルト値を変更する方法を知っている人はいますか。

ありがとう

4

2 に答える 2

3

データベースのcdc_jobs.retentionフィールドを更新する必要があります。cdc_jobsテーブルのレコードは、少なくとも1つのテーブルがCDCに対して有効になるまで存在しません。

-- modify msdb.dbo.cdc_jobs.retention value (in minutes) to be the length of time to keep change-tracked data
update
    j
set
    [retention] = 3679200 -- 7 years
from
    sys.databases d
inner join
    msdb.dbo.cdc_jobs j
        on j.database_id = d.database_id
        and j.job_type = 'cleanup'
        and d.name = '<Database Name, sysname, DatabaseName>';

<Database Name, sysname, DatabaseName>データベース名に置き換えます。

于 2012-05-30T17:25:03.517 に答える
2

2つの代替ソリューション:

  1. クリーンアップジョブを削除します。

    EXEC sys.sp_cdc_drop_job @job_type = N'cleanup';
    
  2. spを介してジョブを変更します。

    EXEC sys.sp_cdc_change_job 
    @job_type = N'cleanup',
    @retention = 2880;
    

分単位の保持時間、最大52494800(100年)。ただし、ジョブを削除すると、データがクリーンアップされることはなく、クリーンアップするデータがある場合、ジョブは検索されません。データを無期限に保持したい場合は、ジョブを削除することをお勧めします。

于 2012-08-01T10:47:47.103 に答える