SQL Server 啟用或禁用 CDC 功能

  1. 查看庫表是否啟動(dòng) CDC
    -- 查看數(shù)據(jù)庫是否啟用cdc
    SELECT name,is_cdc_enabled FROM sys.databases WHERE is_cdc_enabled = 1;
    
    -- 查看當(dāng)前數(shù)據(jù)庫表是否啟用cdc
    SELECT name,is_tracked_by_cdc FROM sys.tables WHERE is_tracked_by_cdc = 1;
    
  2. 數(shù)據(jù)庫啟用和禁用 CDC
    -- 對當(dāng)前數(shù)據(jù)庫啟用 CDC
    USE MyDB 
    GO
    EXECUTE sys.sp_cdc_enable_db;
    GO
    -- 對當(dāng)前數(shù)據(jù)庫禁用 CDC
    USE MyDB  
    GO  
    EXEC sys.sp_cdc_disable_db  
    GO  
    
  3. 數(shù)據(jù)庫表啟用和禁用 CDC
    -- 啟用
    USE MyDB  
    GO  
    EXEC sys.sp_cdc_enable_table  
    @source_schema = N'dbo',  
    @source_name   = N'MyTable',  
    @role_name     = NULL,  
    @supports_net_changes = 1  
    GO 
    -- 禁用
    USE MyDB  
    GO  
    EXEC sys.sp_cdc_disable_table  
    @source_schema = N'dbo',  
    @source_name   = N'MyTable',  
    @capture_instance = N'dbo_MyTable'  
    GO  
    
  4. 查看表 CDC 功能是否啟用
    SELECT  name ,
            is_tracked_by_cdc ,
            CASE WHEN is_tracked_by_cdc = 0 THEN 'CDC功能禁用'
                 ELSE 'CDC功能啟用'
            END 描述
    FROM    sys.tables;
    

注意:

  1. 開啟授權(quán)
    ALTER AUTHORIZATION ON DATABASE::[MyDB] TO [sa]
    
  2. 需開啟 SQL Server Agent 服務(wù)

問題及解決辦法:
如無法執(zhí)行啟用或禁用表的 CDC,查看主機(jī)名的是否一致。

SELECT SERVERPROPERTY('ServerName'), srvname, datasource FROM master.dbo.sysservers;

如不一致,執(zhí)行下面語句:

IF serverproperty('servername')<>@@servername    
  BEGIN  
  DECLARE  @server SYSNAME  
  SET   @server=@@servername      
  EXEC  sp_dropserver @server=@server    
  SET   @server=cast(serverproperty('servername') AS SYSNAME)   
  EXEC  sp_addserver @server=@server,@local='LOCAL'     
  END  
  ELSE  
    PRINT '實(shí)例名與主機(jī)名一致,無需修改!' ;

參考: https://docs.microsoft.com/en-us/sql/relational-databases/track-changes/enable-and-disable-change-data-capture-sql-server?view=sql-server-ver15

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容