設定 Azure SQL 資料庫的 CDC

本頁面說明如何設定變更資料擷取 (CDC),將資料從 Azure SQL 資料庫串流至支援的目的地,例如 BigQuery 或 Cloud Storage。

如要設定 Azure SQL 資料庫,請按照下列步驟操作:

  1. 為來源 Azure SQL 資料庫啟用變更資料擷取 (CDC) 功能。如要執行這項操作,請使用 Azure Data Studio 或 SQL Server Management Studio 連線至資料庫,然後執行下列指令:

    EXEC sys.sp_cdc_enable_db;
    GO
    
  2. 為需要擷取變更的資料表啟用 CDC:

    EXEC sys.sp_cdc_enable_table
    @source_schema = N'SCHEMA_NAME',
    @source_name = N'TABLE_NAME',
    @role_name = NULL
    GO
    

    更改下列內容:

    • SCHEMA_NAME:資料表所屬的結構定義名稱
    • TABLE_NAME:要啟用 CDC 的資料表名稱
  3. 啟用快照隔離功能。

    從 SQL Server 資料庫回填資料時,請務必確保快照一致。如果您未套用本節所述設定,在回填程序期間對資料庫所做的變更可能會導致重複或不正確的結果,尤其是沒有主鍵的資料表。

    啟用快照隔離後,系統會在回填程序開始時建立資料庫的暫時檢視畫面。即使其他使用者同時變更即時資料表,也能確保複製的資料保持一致。啟用快照隔離可能會稍微影響效能,但這是可靠擷取資料的必要條件。

    如要啟用快照隔離功能,請按照下列步驟操作:

    1. 透過 SQL Server 用戶端連結至資料庫。
    2. 執行下列指令:
    ALTER DATABASE DATABASE_NAME SET ALLOW_SNAPSHOT_ISOLATION ON;
    

    DATABASE_NAME 替換成資料庫名稱。

  4. 建立 Datastream 使用者:

    1. 連線到 master 資料庫並建立登入帳戶:

      USE master;
      CREATE LOGIN YOUR_LOGIN WITH PASSWORD = 'PASSWORD';
      
    2. 連線至來源資料庫,並建立登入帳戶的使用者:

      USE DATABASE_NAME
      CREATE USER USER_NAME FOR LOGIN YOUR_LOGIN;
      
    3. db_ownerdb_denydatawriter 角色指派給使用者:

      EXEC sp_addrolemember 'db_owner', 'USER_NAME';
      EXEC sp_addrolemember 'db_denydatawriter', 'USER_NAME';
      
    4. VIEW DATABASE STATE 權限授予使用者:

      GRANT VIEW DATABASE STATE TO USER_NAME;
      

後續步驟