sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan deaktiverer du CDC på sæt af tabeller ELLER deaktiverer på alle tabeller i en database i SQL Server - SQL Server Tutorial

Scenarie:

Du arbejder som SQL Server DBA eller udvikler, Du skal forberede et script, der skal kunne deaktivere Change Data Capture (CDC) på alle tabellerne i en database. Eller hvis du vil deaktivere på en bestemt tabel, skal det være i stand til for at håndtere det.
Nedenstående script kan bruges til at deaktivere Change Data Capture på alle tabellerne i en database, og hvis du gerne vil give listen over tabeller, har du også muligheden. Ved blot at ændre den valgte forespørgsel kan du inkludere eller ekskludere en liste over tabeller, hvor du vil deaktivere 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. Fuld forståelse for PDO ATTR_PERSISTENT

  2. SQLite JSON_EACH()

  3. Skift primær nøgle

  4. Sådan fremskynder du din SQL-server ved hjælp af overvågning af databaseydeevne