Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách tắt CDC trên tập hợp bảng HOẶC tắt trên tất cả bảng trong cơ sở dữ liệu trong SQL Server - Hướng dẫn sử dụng SQL Server

Tình huống:

Bạn đang làm việc với tư cách là Nhà phát triển hoặc DBA SQL Server, Bạn cần chuẩn bị tập lệnh có thể vô hiệu hóa tính năng Thay đổi tính năng thu thập dữ liệu (CDC) trên tất cả các bảng trong cơ sở dữ liệu Hoặc nếu bạn muốn vô hiệu hóa trên một số bảng cụ thể, nó sẽ có thể để xử lý điều đó.
Tập lệnh dưới đây có thể được sử dụng để vô hiệu hóa tính năng thu thập dữ liệu thay đổi trên tất cả các bảng trong cơ sở dữ liệu và nếu bạn muốn cung cấp danh sách các bảng, bạn cũng có tùy chọn này. Chỉ cần thay đổi truy vấn chọn, bạn có thể bao gồm hoặc loại trừ danh sách các bảng mà bạn muốn tắt 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. Cách chỉ trả lại giá trị số trong SQL Server

  2. Hàm IndexOf trong T-SQL

  3. Chọn hàng đầu tiên cho mỗi nhóm

  4. pyodbc không thể kết nối với cơ sở dữ liệu

  5. Tại sao lại sử dụng mức cách ly READ UNCOMMITTED?