Prepare SQL Server para ingestão usando o script de objetos utilitários.
Conclua a tarefa de configuração do banco de dados SQL Server para ingestão no Databricks usando LakeFlow Connect.
Requisitos
- O usuário que executa o script deve ser membro da função
db_owner. - Para configuração de TC: A opção "Alterar acompanhamento" deve estar disponível na plataforma.
- Para configuração CDC : a captura de dados de alterações (CDC) deve estar disponível na plataforma.
o passo 1: Instalar objetos russos
Este passo instala os utilitários, procedimentos armazenados e funções necessários para a configuração SQL Server . Para obter detalhes sobre o que é instalado, consulte a referência do script de objetos utilitáriosSQL Server.
-
Baixe o script: utility_script.sql
-
Abra o script no SQL Server Management Studio (SSMS), no Azure Data Studio ou no seu cliente SQL preferido.
-
Conecte-se à sua instância do SQL Server como um usuário com a função
db_owner. -
Certifique-se de estar conectado ao banco de dados de destino.
-
execução do roteiro.
-
Verificar instalação:
SQLSELECT dbo.lakeflowUtilityVersion_1_1() AS UtilityVersion;
SELECT dbo.lakeflowDetectPlatform() AS Platform;
o passo 2: Habilitar acompanhamento de alteração (para tabelas com chave primária)
O acompanhamento de alterações é um mecanismo leve que rastreia as alterações nas linhas da tabela. Este passo habilita o CT no nível do banco de dados em tabelas específicas e configura objetos de suporte DDL para lidar com alterações de esquema. Para obter detalhes, consulte lakeflowSetupChangeTracking na referência do script de objetos utilitáriosSQL Server.
-- Enable change tracking on specific tables
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'Sales.Orders,Production.Products,HR.Employees',
@User = 'your_ingestion_user',
@Retention = '2 DAYS';
Opções alternativas:
- Para todas as tabelas com chave primária:
@Tables = 'ALL' - Para esquemas específicos:
@Tables = 'SCHEMAS:Sales,HR,Production' - Somente para configuração em nível de banco de dados (sem ativação de tabelas):
@Tables = NULL
o passo 3: Habilitar captura de dados de alterações (CDC) (para tabelas sem chave primária)
CDC captura atividades de inserção, atualização e exclusão, sendo particularmente útil para tabelas sem chave primária. Esta etapa habilita CDC no nível do banco de dados, configura o gerenciamento de instâncias de captura e cria gatilhos para o tratamento automático de alterações de esquema. Para obter detalhes, consulte lakeflowSetupChangeDataCapture na referência do script de objetos utilitáriosSQL Server.
-- Enable CDC on specific tables (particularly those without primary keys)
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'Staging.ImportData,Logs.AuditTrail',
@User = 'your_ingestion_user';
Opções alternativas:
- Para todas as tabelas:
@Tables = 'ALL' - Para esquemas específicos:
@Tables = 'SCHEMAS:Sales,HR' - Somente para configuração em nível de banco de dados:
@Tables = NULL
Você pode usar tanto o acompanhamento de mudanças quanto CDC, ou ambos. Databricks recomenda o uso do acompanhamento de alterações para tabelas com chave primária (o passo 2) e CDC para tabelas sem chave primária (o passo 3) para uma cobertura abrangente.
Gerenciamento de instâncias de captura
LakeFlow Connect utiliza uma convenção de nomenclatura baseada em prefixos para gerenciar instâncias de captura CDC sem afetar instâncias de captura preexistentes criadas por outros sistemas ou processos.
Nomeação de instâncias de capturaLakeFlow
LakeFlow Connect cria e gerencia instâncias de captura usando o seguinte padrão de nomenclatura:
lakeflow_<schema>_<table>_1lakeflow_<schema>_<table>_2
LakeFlow Connect gerencia apenas instâncias de captura que correspondem a esse padrão de nomenclatura. Instâncias de captura preexistentes com nomes diferentes são preservadas e permanecem inalteradas pelas operações LakeFlow .
Requisitos de slot de instância de captura
O SQL Server permite um máximo de 2 instâncias de captura por tabela. Para que LakeFlow Connect funcione com CDC:
- Pelo menos um dos dois slots de instância de captura deve estar disponível para que LakeFlow crie sua instância com prefixo
lakeflow_. - Se ambos os slots já estiverem ocupados por instâncias de captura que não sejamLakeFlow , LakeFlow Connect não poderá criar e gerenciar sua própria instância de captura. Embora LakeFlow possa ler uma instância de captura pré-existente, ele não pode realizar refresh completa ou evolução do esquema de operações.
Se ambos os espaços de instância de captura estiverem ocupados, use a opção "alterar acompanhamento" ou remova uma das instâncias de captura existentes, caso não seja mais necessária.
Coexistência com outros consumidores do CDC
LakeFlow Connect pode coexistir com segurança com outros consumidores CDC na mesma mesa:
- As instâncias de captura pré-existentes são preservadas durante todas as operações LakeFlow (por exemplo, refresh completa e evolução do esquema).
- LakeFlow só descarta e recria suas próprias instâncias com prefixo
lakeflow_quando necessário. - Outros sistemas que consomem dados CDC de instâncias de captura que não sejamLakeFlow continuam a funcionar sem interrupção.
operações que recriam instâncias de captura LakeFlow :
As seguintes operações fazem com que LakeFlow descarte e recrie suas instâncias de captura com prefixo lakeflow_ (mas não outras):
- operações refresh completa
- Adicionando colunas às tabelas (
ADD COLUMN)
Exemplo de cenário:
Se uma tabela já possui uma instância de captura chamada my_app_cdc:
- LakeFlow Connect cria
lakeflow_schema_table_1. - Ambas as instâncias de captura coexistem em segurança.
- Quando LakeFlow realiza uma refresh completa ou evolução do esquema, ele apenas recria
lakeflow_schema_table_1. - A instância
my_app_cdcpermanece intacta e continua a funcionar para o outro sistema.
o passo 4: Conceder permissões adicionais (se necessário)
Este passo concede as permissões necessárias em nível de sistema e de tabela para o usuário de ingestão. Embora os passos 2 e 3 concedam permissões específicas de CT e CDC, este passo garante que o usuário tenha todas as permissões SELECT necessárias. Para obter detalhes, consulte lakeflowFixPermissions na referência do script de objetos utilitáriosSQL Server.
-- Grant system-level and table-level permissions
EXEC dbo.lakeflowFixPermissions
@User = 'your_ingestion_user',
@Tables = 'Sales.Orders,Production.Products,HR.Employees';
Opções alternativas:
- Para todas as tabelas:
@Tables = 'ALL' - Somente permissões do sistema:
@Tables = NULL - Esquemas específicos:
@Tables = 'SCHEMAS:Sales,HR'
Os procedimentos de configuração nas etapas 2 e 3 concedem automaticamente as permissões CT e CDC necessárias, mas você pode ter que executar este procedimento para conceder permissões adicionais de nível de tabela SELECT ou se as permissões foram revogadas.
o passo 5: Verificar configuração
Execute as seguintes consultas para confirmar se o acompanhamento de alterações e CDC estão configurados corretamente em seu banco de dados e tabelas:
-- Check Change Tracking status
SELECT
d.name AS DatabaseName,
ctd.is_auto_cleanup_on,
ctd.retention_period,
ctd.retention_period_units_desc
FROM sys.change_tracking_databases ctd
INNER JOIN sys.databases d ON ctd.database_id = d.database_id
WHERE d.name = DB_NAME();
-- Check tables with Change Tracking enabled
SELECT
SCHEMA_NAME(t.schema_id) + '.' + t.name AS TableName,
ct.is_track_columns_updated_on,
ct.begin_version,
ct.cleanup_version
FROM sys.change_tracking_tables ct
INNER JOIN sys.tables t ON ct.object_id = t.object_id;
-- Check CDC status
SELECT
DB_NAME() AS DatabaseName,
is_cdc_enabled
FROM sys.databases
WHERE database_id = DB_ID();
-- Check tables with CDC enabled
SELECT
SCHEMA_NAME(t.schema_id) + '.' + t.name AS TableName,
ct.capture_instance,
ct.start_lsn,
ct.create_date
FROM cdc.change_tables ct
INNER JOIN sys.tables t ON ct.source_object_id = t.object_id;
Exemplo: Abordagem híbrida
Este exemplo usa 'ALL' para habilitar CT e CDC em todas as tabelas por simplicidade. Para uso em produção, considere os cenários comuns nesta página para direcionar esquemas ou tabelas específicos.
-- Step 1: Already completed (script installed)
-- Step 2 & 3: Enable both CT and CDC
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'ALL',
@User = 'lakeflow_user',
@Retention = '2 DAYS';
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'ALL',
@User = 'lakeflow_user';
-- Step 4: Grant all necessary permissions
EXEC dbo.lakeflowFixPermissions
@User = 'lakeflow_user',
@Tables = 'ALL';
Cenários comuns
Cenário 1: Alterar somente acompanhamento (esquemas específicos)
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'SCHEMAS:Sales,Production',
@User = 'lakeflow_user',
@Retention = '2 DAYS';
EXEC dbo.lakeflowFixPermissions
@User = 'lakeflow_user',
@Tables = 'SCHEMAS:Sales,Production';
Cenário 2: Somente CDC (tabelas específicas)
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'Staging.ImportData,Logs.AuditTrail,dbo.TempRecords',
@User = 'lakeflow_user';
EXEC dbo.lakeflowFixPermissions
@User = 'lakeflow_user',
@Tables = 'Staging.ImportData,Logs.AuditTrail,dbo.TempRecords';
Cenário 3: Abordagem híbrida (CT para alguns esquemas, CDC para tabelas específicas)
-- Enable CT on transactional schemas
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'SCHEMAS:Sales,HR',
@User = 'lakeflow_user',
@Retention = '3 DAYS';
-- Enable CDC on specific staging tables without primary keys
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'Staging.ImportData,Logs.AuditTrail',
@User = 'lakeflow_user';
-- Grant permissions on all tables
EXEC dbo.lakeflowFixPermissions
@User = 'lakeflow_user',
@Tables = 'ALL';