Here are the cdc commands I use …
--STATUS --is cdc enabled on my current database? select is_cdc_enabled, * from master.sys.databases --is cdc enabled on this table? use SomeDatabaseName go select is_tracked_by_cdc, * from sys.tables order by 1 desc
-- ENABLE use SomeDatabaseName go exec sys.sp_cdc_enable_db -- enable database go exec sys.sp_cdc_enable_table -- enable table @source_schema = N'dbo', @source_name = N'SomeTableName' -- table to be monitored @role_name = NULL, -- login used to restrict access @filegroup_name = N'cdc_fg' -- used to set path for change-table to its own drive go
-- MISC QUERIES
select * from cdc.dbo_SomeTableName_CT -- changes plus 5x cdc columns
where __$start_lsn = 0xSomeLsnNumber
$operation ... 1=delete
2=insert
3=value before update
4=value after update
$update_mask ... bit-map of column-names updated (IE: 3 & 4 only)
select * from cdc.captured_columns -- list of logged column-names
select * from cdc.change_tables -- table(s) monitored by cdc
select * from cdc.ddl_history -- ddl chages
select * from cdc.index_columns -- indexes on monitored tables
select * from lsn_time_mapping -- lsn numbers with time-stamps
select min(tran_begin_time), max(tran_begin_time)
from cdc.lsn_time_mapping -- check its running
--REMOVE use Somedatabase go exec sys.sp_cdc_help_change_date_capture -- get values for @capture_instance etc go use SomeDatabase go -- exec sys.sp_cdc_disable_table -- disable table @source_schema = N'dbo', @source_name = N'SomeTableName', -- table name @capture_instance = N'dbo_SomeTableName' go use somedatabase go --exec sys.sp_cdc_disable_db -- disable database ... and delete all data and objects go
--MANAGEMENT --show latency in seconds & hours select latency, latency/3600 latency_hrs, * from SomeDatabase.sys.dm_cdc_log_scan_sessions --show current sqljob settings select * from msdb.dbo.cdc_jobs -- note: 4320 mins = 3 days --chanage 'capture' job settings exec sys.sp_cdc_change_job @job_type = 'capture', @maxtrans = 600, --500 default @maxscans = 200, --10 @continuous = 1, --1 @pollinginterval = 2 --5 --dont forget to stop/start job to use these new settings -- see if cdc (aka replication) is stopping the log-file shrinking select name, log_reuse_wait_desc from sys.databases -- see percentage log-file used dbcc sqlperf(logspace) -- show cdc error-log select * from master.sys.dm_cdc_errors -- emergency dump all pending transactions, allowing shrink --sp_repldone @xactid = null, @xact_segno = null, @numtrans = 0, @reset = 1