Сценарий:
Вие работите като SQL Server DBA или разработчик, трябва да подготвите скрипт, който трябва да може да деактивира улавянето на промяна на данни (CDC) за всички таблици в база данни Или ако искате да деактивирате за някаква конкретна таблица, трябва да може за да се справите с това.Скриптът по-долу може да се използва за деактивиране на улавянето на промяна на данни за всички таблици в база данни и ако искате да предоставите списък с таблици, имате и опцията. Като просто промените заявката за избор, можете да включите или изключите списък с таблици, в които искате да деактивирате CDC.
/*------------------------------------------------ Disable CDC on Set of Tables --------------------------------------------------*/
DECLARE @TableName VARCHAR(100)
DECLARE CDC_Cursor CURSOR FOR
--Provide List of Tables here on which CDC needs to be disabled. SELECT * FROM (SELECT 'T' AS TableName UNION ALL SELECT 'T2' AS TableName --IF want to Disable 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 is Already Disabled on Table , Print Message IF @CDC_Status = 0 PRINT 'CDC is already Disabled on ' + @TableName + ' Table' --IF CDC is not Disabled on Table, Disable CDC and Print Message IF @CDC_Status = 1 BEGIN SET @SQL='EXEC sys.sp_cdc_disable_table @source_schema = ''dbo'', @source_name = ''' + @TableName + ''', @capture_instance = N''All'';' EXEC sp_executesql @SQL PRINT 'CDC disabled on ' + @TableName + ' Table successfully' END FETCH NEXT FROM CDC_Cursor INTO @TableName END CLOSE CDC_Cursor DEALLOCATE CDC_Cursor