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

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

Scenariusz:

Pracujesz jako SQL Server DBA lub programista, musisz napisać skrypt, którego możesz użyć do włączenia zmiany przechwytywania danych (CDC ) we wszystkich tabelach w bazie danych lub włączenia w niektórych określonych tabelach.
Poniższy skrypt może być służy do włączania przechwytywania zmian danych we wszystkich tabelach w bazie danych wybranych tabel. Możesz zmienić zapytanie, aby uwzględnić lub wykluczyć tabele, które lubisz.

/*------------------------------------------------
Enable CDC on Set of Tables
( To Enable CDC on Table , CDC Should be enabled on Database level)
--------------------------------------------------*/
USE [DatabaseName]
GO
DECLARE @TableName VARCHAR(100)
DECLARE @TableSchema VARCHAR(100)
DECLARE CDC_Cursor CURSOR FOR
  SELECT *
  FROM   (
         
         SELECT 'T' AS TableName,'dbo' AS TableSchema
          UNION ALL
          SELECT 'T2' AS TableName,'dbo' AS TableSchema
           --IF want to Enable CDC on All Table, then use
         --SELECT Name,SCHEMA_NAME(schema_id) AS TableSchema
         --FROM   sys.objects
         --WHERE  type = 'u'
               -- AND is_ms_shipped <> 1
         ) CDC
OPEN CDC_Cursor
FETCH NEXT FROM CDC_Cursor INTO @TableName,@TableSchema
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(@TableSchema+'.'+@TableName))

      --IF CDC Already Enabled on Table , Print Message
      IF @CDC_Status = 1
        PRINT 'CDC is already enabled on ' +@TableSchema+'.'+@TableName
              + ' Table'

      --IF CDC is not enabled on Table, Enable CDC and Print Message
      IF @CDC_Status <> 1
        BEGIN
            SET @SQL='EXEC sys.sp_cdc_enable_table
      @source_schema = '''+@TableSchema+''',
      @source_name   = ''' + @TableName
                     + ''',
      @role_name     = null;'

            EXEC sp_executesql @SQL

            PRINT 'CDC  enabled on ' +@TableSchema+'.'+ @TableName
                  + ' Table successfully'
        END

      FETCH NEXT FROM CDC_Cursor INTO @TableName,@TableSchema
  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. Co oznacza podwójne w serwerze sql?

  2. Jak uzyskać listę włączonych / wyłączonych ograniczeń kontrolnych w bazie danych SQL Server — samouczek SQL Server / TSQL, część 86

  3. SQL Server Wyrażenia regularne w T-SQL

  4. Użyj COLUMNPROPERTY(), aby zwrócić informacje o kolumnie lub parametrze w SQL Server

  5. Jak połączyć się z SQL Server za pomocą sqlalchemy przy użyciu uwierzytelniania systemu Windows?