Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak wyłączyć CDC w zestawie tabel LUB wyłączyć we wszystkich tabelach w bazie danych w programie SQL Server — samouczek dotyczący programu SQL Server

Scenariusz:

Pracujesz jako SQL Server DBA lub Developer, Musisz przygotować skrypt, który powinien być w stanie wyłączyć przechwytywanie zmian danych (CDC) na wszystkich tabelach w bazie danych lub jeśli chcesz wyłączyć na jakiejś konkretnej tabeli, powinien być w stanie aby sobie z tym poradzić.
Poniższy skrypt może być użyty do wyłączenia zmiany przechwytywania danych we wszystkich tabelach w bazie danych, a jeśli chcesz podać listę tabel, również masz taką opcję. Po prostu zmieniając zapytanie wybierające, możesz uwzględnić lub wykluczyć listę tabel, w których chcesz wyłączyć 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. Błąd serwera SQL — HRESULT E_FAIL został zwrócony z wywołania komponentu COM

  2. Jak wyłączyć wszystkie ograniczenia sprawdzania w bazie danych SQL Server — samouczek SQL Server / TSQL, część 87

  3. Jak WYBRAĆ * ale bez Nazwy kolumn muszą być unikalne w każdym widoku

  4. Czy możliwe jest wykonanie wielu aktualizacji za pomocą jednej instrukcji UPDATE SQL?

  5. Jak uwzględnić wyniki związane z ostatnim miejscem podczas używania klauzuli TOP w SQL Server?