/*------------------------------------------------
Enable CDC on Set of Tables
( To Enable CDC on Table , CDC Should be enabled on Database level)
--------------------------------------------------*/
DECLARE @TableName VARCHAR(100)
DECLARE CDC_Cursor CURSOR FOR
SELECT *
FROM (SELECT 'T' AS TableName
UNION ALL
SELECT 'T2' AS TableName
--IF want to Enable CDC on All Table, then use
--SELECT Name
--FROM sys.objects
--WHERE type = 'u'
-- AND is_ms_shipped <> 1
) CDC
OPEN CDC_Cursor
FETCH NEXT FROM CDC_Cursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @SQL NVARCHAR(1000)
DECLARE @CDC_Status TINYINT
SET @CDC_Status=(SELECT Count(*)
FROM cdc.change_tables
WHERE Source_object_id = Object_id(@TableName))
--IF CDC Already Enabled on Table , Print Message
IF @CDC_Status = 1
PRINT 'CDC is already enabled on ' + @TableName
+ ' Table'
--IF CDC is not enabled on Table, Enable CDC and Print Message
IF @CDC_Status <> 1
BEGIN
SET @SQL='EXEC sys.sp_cdc_enable_table
@source_schema = ''dbo'',
@source_name = ''' + @TableName
+ ''',
@role_name = null;'
EXEC Sp_executesql
@SQL
PRINT 'CDC enabled on ' + @TableName
+ ' Table successfully'
END
FETCH NEXT FROM CDC_Cursor INTO @TableName
END
CLOSE CDC_Cursor
DEALLOCATE CDC_Cursor
Enable CDC on Set of Tables
( To Enable CDC on Table , CDC Should be enabled on Database level)
--------------------------------------------------*/
DECLARE @TableName VARCHAR(100)
DECLARE CDC_Cursor CURSOR FOR
SELECT *
FROM (SELECT 'T' AS TableName
UNION ALL
SELECT 'T2' AS TableName
--IF want to Enable CDC on All Table, then use
--SELECT Name
--FROM sys.objects
--WHERE type = 'u'
-- AND is_ms_shipped <> 1
) CDC
OPEN CDC_Cursor
FETCH NEXT FROM CDC_Cursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @SQL NVARCHAR(1000)
DECLARE @CDC_Status TINYINT
SET @CDC_Status=(SELECT Count(*)
FROM cdc.change_tables
WHERE Source_object_id = Object_id(@TableName))
--IF CDC Already Enabled on Table , Print Message
IF @CDC_Status = 1
PRINT 'CDC is already enabled on ' + @TableName
+ ' Table'
--IF CDC is not enabled on Table, Enable CDC and Print Message
IF @CDC_Status <> 1
BEGIN
SET @SQL='EXEC sys.sp_cdc_enable_table
@source_schema = ''dbo'',
@source_name = ''' + @TableName
+ ''',
@role_name = null;'
EXEC Sp_executesql
@SQL
PRINT 'CDC enabled on ' + @TableName
+ ' Table successfully'
END
FETCH NEXT FROM CDC_Cursor INTO @TableName
END
CLOSE CDC_Cursor
DEALLOCATE CDC_Cursor