Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Mengaktifkan CDC di Kumpulan Tabel ATAU Mengaktifkan Semua Tabel di Database di SQL Server - Tutorial SQL Server

Skenario:

Anda bekerja sebagai SQL Server DBA atau Pengembang, Anda perlu menulis skrip yang dapat Anda gunakan untuk mengaktifkan Change Data Capture (CDC ) pada semua tabel dalam database atau Aktifkan pada beberapa Tabel tertentu.
Skrip di bawah ini dapat berupa digunakan untuk Mengaktifkan Ubah Pengambilan Data pada semua tabel dalam database tabel yang dipilih. Anda dapat mengubah kueri untuk menyertakan atau mengecualikan tabel yang Anda suka.

/*------------------------------------------------
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. Menghubungkan Delphi di Linux ke SQL Server

  2. Menjalankan SQL Server 2014 di Mesin Virtual Azure

  3. Berapa karakter maksimum untuk NVARCHAR(MAX)?

  4. Kode untuk memvalidasi Skrip SQL

  5. Mengotomatiskan Pemulihan Uji Basis Data di SQL Server