Habilitar a integração CDC em Microsoft SQL Server
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
-
Faça login no banco de dados que o senhor deseja habilitar para CDC.
-
Execute o seguinte comando T-SQL no contexto do banco de dados:
Banco de dados SQL do Azure e SQL Server local
SQLEXEC sys.sp_cdc_enable_db
Amazon RDS para SQL Server
SQLEXEC 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
erole_name
. - Se a tabela tiver um key primário, o
@support_net_changes
suportará apenas um valor de1
.
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:
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:
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.
-
Faça o download do script ddl_support_objects.sql.
-
Modifique o script para definir o valor
mode
:BOTH
: Inicializa os objetos CT e CDC (default)CT
: inicializa objetos CTCDC
: Inicializa os objetos CDCNONE
: Exclui todos os objetos CT e CDC pré-existentes
-
(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. -
Execute o script em cada banco de dados que o senhor deseja ingerir.
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 objetolakeflowDisableOldCaptureInstance_1_1
VIEW DEFINITION
no objetolakeflowRefreshCaptureInstance_1_1
VIEW DEFINITION
no objetolakeflowMergeCaptureInstances_1_1
VIEW DEFINITION
no banco de dados que você deseja ingerirVIEW DATABASE PERFORMANCE STATE
no banco de dados que você deseja ingerirUPDATE
no objetolakeflowCaptureInstanceInfo_1_1
EXECUTE
no esquemadbo
EXECUTE
no objetolakeflowMergeCaptureInstances_1_1
EXECUTE
no objetolakeflowDisableOldCaptureInstance_1_1
EXECUTE
no objetolakeflowRefreshCaptureInstance_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>
:
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>;