为 CDC 配置 Azure SQL 数据库

您可以使用 Datastream 将变更数据捕获 (CDC) 更新从 Azure SQL 数据库流式传输到 受支持的目标,例如 BigQuery 或 Cloud Storage。 Datastream 仅支持使用变更表 CDC 方法的 Azure SQL 数据库。如需准备源,请在数据库和表上启用 CDC,开启快照隔离,并配置 Datastream 用户。

如需配置 Azure SQL 数据库,请执行以下操作:

  1. 为源 Azure SQL 数据库启用变更数据捕获 (CDC)。如需执行此操作,请使用 Azure 数据洞察或 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_owner 和 db_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;
      

后续步骤