Configurar um banco de dados do Azure SQL para CDC

Nesta página, descrevemos como configurar a captura de dados alterados (CDC) para transmitir dados de um banco de dados do Azure SQL para um destino compatível, como o BigQuery ou o Cloud Storage.

Para configurar um banco de dados do Azure SQL:

  1. Ative a captura de dados alterados (CDC) para seu banco de dados de origem do Azure SQL. Para isso, conecte-se ao banco de dados usando o Azure Data Studio ou o SQL Server Management Studio e execute o seguinte comando:

    EXEC sys.sp_cdc_enable_db;
    GO
    
  2. Ative a CDC nas tabelas em que você precisa capturar mudanças:

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

    Substitua:

    • SCHEMA_NAME: o nome do esquema a que as tabelas pertencem
    • TABLE_NAME: o nome da tabela em que você quer ativar o CDC.
  3. Ative o isolamento de snapshot.

    Ao fazer o backfill de dados do banco de dados do SQL Server, é importante garantir snapshots consistentes. Se você não aplicar as configurações descritas nesta seção, as mudanças feitas no banco de dados durante o processo de backfill poderão levar a duplicatas ou resultados incorretos, especialmente para tabelas sem chaves primárias.

    A ativação do isolamento de snapshot cria uma visualização temporária do banco de dados no início do processo de backfill. Isso garante que os dados copiados permaneçam consistentes, mesmo que outros usuários façam mudanças nas tabelas ativas ao mesmo tempo. Ativar o isolamento de snapshot pode ter um pequeno impacto no desempenho, mas é essencial para uma extração de dados confiável.

    Para ativar o isolamento de snapshot:

    1. Acesse o banco de dados com um cliente do SQL Server.
    2. Execute este comando:
    ALTER DATABASE DATABASE_NAME SET ALLOW_SNAPSHOT_ISOLATION ON;
    

    Substitua DATABASE_NAME pelo nome do seu banco de dados.

  4. Crie um usuário do Datastream:

    1. Conecte-se ao banco de dados master e crie um login:

      USE master;
      CREATE LOGIN YOUR_LOGIN WITH PASSWORD = 'PASSWORD';
      
    2. Conecte-se ao banco de dados de origem e crie um usuário para seu login:

      USE DATABASE_NAME
      CREATE USER USER_NAME FOR LOGIN YOUR_LOGIN;
      
    3. Atribua as funções db_owner e db_denydatawriter ao usuário:

      EXEC sp_addrolemember 'db_owner', 'USER_NAME';
      EXEC sp_addrolemember 'db_denydatawriter', 'USER_NAME';
      
    4. Conceda a permissão VIEW DATABASE STATE ao usuário:

      GRANT VIEW DATABASE STATE TO USER_NAME;
      

A seguir