sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man inaktiverar CDC på en uppsättning tabeller ELLER inaktiverar på alla tabeller i en databas i SQL Server - SQL Server Tutorial

Scenario:

Du arbetar som SQL Server DBA eller utvecklare, du måste förbereda skript som ska kunna inaktivera Change Data Capture (CDC) på alla tabeller i en databas. Eller om du vill inaktivera på någon specifik tabell, bör det kunna för att hantera det.
Skript nedan kan användas för att inaktivera Change Data Capture på alla tabeller i en databas och om du vill tillhandahålla listan med tabeller har du också möjligheten. Genom att helt enkelt ändra urvalsfrågan kan du inkludera eller exkludera lista över tabeller där du vill inaktivera 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. Migrera en Oracle-databas från AWS EC2 till AWS RDS, del 2

  2. ODBC-anrop misslyckades med lagrad procedur - Skicka igenom förfrågan

  3. SQL Server Databas Size Growth med hjälp av Backup-historik

  4. Att försöka exportera ett Oracle via PL/SQL ger ett datum på 0000-00-00