Pular para o conteúdo principal

Habilitar a integração CDC em Microsoft SQL Server

info

Visualização

O conector do Microsoft SQL Server está em Public Preview.

Esta página fornece instruções para ativar a captura integrada de dados de alterações (CDC) (CDC) em Microsoft SQL Server. O senhor deve ativar change acompanhamento ou CDC para usar o conector SQL Server. Databricks recomenda o uso do acompanhamento de alterações para qualquer tabela que tenha um key primário para minimizar a carga no banco de dados de origem. Se as opções change acompanhamento e CDC estiverem ambas ativadas, o conector usará change acompanhamento. Para obter orientação sobre qual opção escolher, consulte Change acompanhamento vs. captura de dados de alterações (CDC).

Habilitar a integração CDC para o banco de dados de origem

  1. Faça login no banco de dados que o senhor deseja habilitar para CDC.

  2. Execute o seguinte comando T-SQL no contexto do banco de dados:

    Banco de dados SQL do Azure e SQL Server local

    SQL
    EXEC sys.sp_cdc_enable_db

    Amazon RDS para SQL Server

    SQL
    EXEC msdb.dbo.rds_cdc_enable_db '<database-name>'

Para obter mais informações, consulte Ativar captura de dados de alterações (CDC) para um banco de dados na documentação SQL Server.

Habilitar a integração CDC na tabela de origem

Para ativar o CDC na tabela de origem, execute o seguinte procedimento armazenado em Azure SQL. Substitua os valores por source_schema, source_name e role_name. @support_net_changes só aceita um valor de 1 se a tabela tiver um primário key.

  • Substitua os valores por source_schema, source_name e role_name.
  • Se a tabela tiver um key primário, o @support_net_changes suportará apenas um valor de 1.
SQL
EXEC sys.sp_cdc_enable_table
@source_schema = N'MySchema',
@source_name = N'MyTable',
@role_name = NULL,
@supports_net_changes = 1

Para obter mais informações, consulte Ativar captura de dados de alterações (CDC) para uma tabela na documentação SQL Server.

Grant SELECT no esquema do CDC

Além dos privilégios descritos na configuração de origem, o usuário do banco de dados precisa do privilégio SELECT no esquema cdc. Esse esquema contém as tabelas de alterações que são criadas quando o CDC é ativado. executar o seguinte comando T-SQL:

SQL
GRANT SELECT ON SCHEMA::cdc to <database-user>;

Bolsa VIEW SERVER STATE (local e RDS)

Somente para instâncias locais e RDS, o privilégio VIEW SERVER STATE é necessário para consultar sys.dm_server_services, que é usado para verificar o status do SQL Server Agent. executar o seguinte comando T-SQL:

SQL
GRANT VIEW SERVER STATE to <database-user>

Configurar a captura de DDL e a evolução do esquema

O conector do SQL Server pode rastrear a linguagem de definição de dados (DDL) em objetos de banco de dados replicados e aplicar alterações relevantes no esquema da tabela às tabelas de destino ou adicionar novas tabelas no caso de replicação de esquema completo.

A captura de DDL requer configuração adicional de objetos de banco de dados, como tabelas internas, procedimentos armazenados e gatilhos. O script Transact-SQL (T-SQL) fornecido neste artigo (ddl_support_objects.sql) elimina todos os objetos de suporte DDL pré-existentes e cria os objetos de suporte DDL necessários para capturar as alterações DDL que ocorrem no banco de dados.

  1. Faça o download do script ddl_support_objects.sql.

  2. Modifique o script para definir o valor mode:

    • BOTH: Inicializa os objetos CT e CDC (default)
    • CT: inicializa objetos CT
    • CDC: Inicializa os objetos CDC
    • NONE: Exclui todos os objetos CT e CDC pré-existentes
  3. (Recomendado) Opcionalmente, modifique o script para definir a variável replicationUser como o usuário do banco de dados do SQL Server.

    Se replicationUser for definido, o script concederá ao usuário todos os privilégios necessários para trabalhar com os objetos de suporte DDL. Caso contrário, você deverá conceder cada privilégio manualmente.

  4. Execute o script em cada banco de dados que o senhor deseja ingerir.

important

Não execute o script no banco de dados principal.

Se o senhor executar o script em uma ferramenta de terceiros, selecione o script inteiro antes de executá-lo.

captura de dados de alterações (CDC) (CDC) requisitos de privilégio

Se você definir a variável replicationUser no script, o script concederá os privilégios necessários nos objetos de suporte DDL ao usuário do banco de dados. Os privilégios necessários são:

  • VIEW DEFINITION no objeto lakeflowDisableOldCaptureInstance_1_1
  • VIEW DEFINITION no objeto lakeflowRefreshCaptureInstance_1_1
  • VIEW DEFINITION no objeto lakeflowMergeCaptureInstances_1_1
  • VIEW DEFINITION no banco de dados que você deseja ingerir
  • VIEW DATABASE PERFORMANCE STATE no banco de dados que você deseja ingerir
  • UPDATE no objeto lakeflowCaptureInstanceInfo_1_1
  • EXECUTE no esquema dbo
  • EXECUTE no objeto lakeflowMergeCaptureInstances_1_1
  • EXECUTE no objeto lakeflowDisableOldCaptureInstance_1_1
  • EXECUTE no objeto lakeflowRefreshCaptureInstance_1_1

Se replicationUser não estiver definido no script, o senhor deverá conceder manualmente os privilégios necessários para o CDC. Para fazer isso, execute o seguinte comando T-SQL, substituindo <database-user>:

SQL
GRANT VIEW DEFINITION ON object::dbo.lakeflowDisableOldCaptureInstance_1_1 TO <database-user>;
GRANT VIEW DEFINITION ON object::dbo.lakeflowRefreshCaptureInstance_1_1 TO <database-user>;
GRANT VIEW DEFINITION ON object::dbo.lakeflowMergeCaptureInstances_1_1 TO <database-user>;
GRANT VIEW DEFINITION TO <database-user>;
GRANT VIEW DATABASE PERFORMANCE STATE TO <database-user>;
GRANT UPDATE ON object::dbo.lakeflowCaptureInstanceInfo_1_1 TO <database-user>;
GRANT EXECUTE ON schema::dbo TO <database-user>;
GRANT EXECUTE ON object::dbo.lakeflowMergeCaptureInstances_1_1 TO <database-user>;
GRANT EXECUTE ON object::dbo.lakeflowDisableOldCaptureInstance_1_1 TO <database-user>;
GRANT EXECUTE ON object::dbo.lakeflowRefreshCaptureInstance_1_1 TO <database-user>;

Próxima etapa

Criar um pipeline de ingestão