SQLServer2008データベースのいくつかのテーブルでCDCを有効にしました。変更履歴を保持できる日数を変更したい。
sys.sp_cdc_cleanup_change_tableストアドプロシージャによって削除される前に、デフォルトで変更ログが3日間保持されることを読みました。
ログをより長く保持できるように、このデフォルト値を変更する方法を知っている人はいますか。
ありがとう
SQLServer2008データベースのいくつかのテーブルでCDCを有効にしました。変更履歴を保持できる日数を変更したい。
sys.sp_cdc_cleanup_change_tableストアドプロシージャによって削除される前に、デフォルトで変更ログが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>
データベース名に置き換えます。
2つの代替ソリューション:
クリーンアップジョブを削除します。
EXEC sys.sp_cdc_drop_job @job_type = N'cleanup';
spを介してジョブを変更します。
EXEC sys.sp_cdc_change_job
@job_type = N'cleanup',
@retention = 2880;
分単位の保持時間、最大52494800(100年)。ただし、ジョブを削除すると、データがクリーンアップされることはなく、クリーンアップするデータがある場合、ジョブは検索されません。データを無期限に保持したい場合は、ジョブを削除することをお勧めします。