Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да деактивирате CDC върху набор от таблици ИЛИ да деактивирате за всички таблици в база данни в SQL Server - урок за SQL Server

Сценарий:

Вие работите като 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
 
 
 
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да видя активни връзки със SQL Server?

  2. Защо създавате изглед в база данни?

  3. Заменете първото появяване на подниз в низ в SQL

  4. Конфигурация за репликация на транзакции на SQL Server

  5. Как да коригирате „Невалидно име на обект „OPENJSON“.“ в SQL Server