CDC
Which Databases Are Enabled
select name, is_cdc_enabled from sys.databases;
Enable Database
exec msdb.dbo.rds_cdc_enable_db 'DBName'
Enable Table
EXEC sys.sp_cdc_enable_table
@source_schema = N'schemaName',
@source_name = N'table_name',
@role_name = NULL,
@supports_net_changes = 0
ExtraConnectionAttributes: "SetUpMsCdcForTables=true;"
EXEC sys.sp_cdc_help_change_data_capture
SELECT * FROM sys.dm_cdc_log_scan_sessions
DMS
resource "aws_dms_endpoint" "ec2_source" {
...
"setUpMsCdcForTables=true;"
...
}
Is Distributor Active?
sp_get_distributor
Check for CDC Errors
SELECT *
FROM sys.dm_cdc_errors
ORDER BY error_time DESC;
Example Scripts
exec msdb.dbo.rds_cdc_enable_db 'AnalyticsDB'
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'some_table',
@role_name = NULL,
@supports_net_changes = 0
Debezium
EXEC sp_changedbowner 'root'
EXEC sys.sp_cdc_enable_db
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'another_table',
@role_name = NULL,
@supports_net_changes = 0
GO
EXEC sys.sp_cdc_help_change_data_capture
GO
Find Tables Without Primary Keys
SELECT t.name AS TableName
FROM sys.tables t
LEFT JOIN sys.indexes i ON t.object_id = i.object_id AND i.is_primary_key = 1
WHERE i.object_id IS NULL;