Referência de script de objetos utilitáriosSQL Server
Acesse o material de referência para o script de objetos utilitários SQL Server , incluindo componentes, parâmetros e solução de problemas.
Visão geral
O script instala utilitários versionados, procedimentos armazenados e funções para configurar seu banco de dados SQL Server para ingestão no LakeFlow Connect. As tarefas de configuração incluem:
- Gestão de permissões
- Alterar configuração de envio (CT)
- captura de dados de alterações (CDC) (CDC) setup
- Detecção de plataforma
- Suporte a DDL para criação de objetos para alteração de esquema
Informações da versão
- Versão atual: 1.7
- Versão principal: 1
- Versão Minor: 7
- Função de versão:
lakeflowUtilityVersion()
Novidades na versão 1.7
Destaques
- Corrige um bug de perda de dados na evolução do esquema. Em versões anteriores, a adição de uma coluna a uma tabela que também possui uma instância de captura pré-existente (não LakeFlow) podia ingerir a nova coluna como
NULL. Isso foi corrigido, juntamente com várias falhas relacionadas à evolução do esquema (consulte Correções de bugs). - Objetos de suporte a DDL agora são opcionais para o acompanhamento de alterações. A tabela de auditoria DDL e o trigger não são mais necessários para a evolução do esquema automática e vêm desativados por default. Defina
@CreateDdlSupportingObjects = 1emlakeflowSetupChangeTrackingapenas se você ainda os quiser. - Evolução do esquema mais confiável. As alterações de restrições são classificadas para que as não quebrantes, como foreign keys, não mais trigger desnecessários full refreshes.
Correções de bugs
- Foram corrigidas várias falhas de evolução do esquema
ADD COLUMN, incluindo tabelas que usam mascaramento de dados dinâmico, agrupamentos sensíveis a maiúsculas e minúsculas ou binários, e um loop de reinicialização ou ingestão interrompida quando uma instância de captura pré-existente está presente. - Erros de conflito de collation corrigidos em bancos de dados com uma collation de servidor não default.
- Foram corrigidos triggers de DDL que podiam falhar quando executados a partir de uma sessão com opções de
SETnon-default. - Corrigido
lakeflowFixPermissionspara conceder as permissões necessárias com escopo de servidor do banco de dados master. - A desinstalação corrigida (modo
CLEANUP) deixando triggers DDL órfãos que poderiam bloquearALTER TABLE.
Outras alterações
- Adicionado
@AllowDisablePreExistingCaptureInstancesemlakeflowSetupChangeDataCapture. Defina-o como1para permitir que o Lakeflow Connect assuma o controle e gerencie a instância de captura de CDC pré-existente (não Lakeflow) de uma tabela, em vez de deixá-la no lugar.
componentes principais
Funções
lakeflowDetectPlatform()
Detecta o tipo de plataforma do SQL Server.
Retorna: 'AZURE_SQL_DATABASE', 'AZURE_SQL_MANAGED_INSTANCE', 'AMAZON_RDS', 'ON_PREMISES', ou 'UNKNOWN'
lakeflowUtilityVersion()
Detecta a versão dos objetos russos.
Devoluções: '1.7'
Procedimentos armazenados
lakeflowFixPermissions
Concede as permissões necessárias aos usuários para operações de ingestão.
Parâmetros:
Parâmetro | Descrição |
|---|---|
| Obrigatório. Nome de usuário ao qual conceder permissões |
| Opcional. Controla o escopo de permissões em nível de tabela. |
@Tables opções de parâmetros:
Opção | Descrição |
|---|---|
| Conceder apenas permissões de nível de sistema (default) |
| Conceda permissões em todas as tabelas de usuários no banco de dados. |
| Conceder permissões em todas as tabelas nos esquemas especificados. |
| Conceder permissões em tabelas específicas |
Suporte a curingas | Exemplo: |
O que faz:
- Concede
SELECTna visão de sistema necessária (sys.objects,sys.tables,sys.columns, etc.) - Concede
EXECUTEem procedimentos armazenados do sistema (sp_tables,sp_columns_100, etc.) - Opcionalmente, concede
SELECTem tabelas de usuários com base no parâmetro@Tables. - Lida com diferenças específicas da plataforma (Banco de Dados SQL Azure , instância gerenciada, RDS, local).
lakeflowSetupChangeTracking
Ativa o acompanhamento de alterações nos níveis de banco de dados e tabela, com suporte a DDL opcional (opcional).
Parâmetros:
Parâmetro | Descrição |
|---|---|
| Opcional. Tabelas para habilitar a TC em |
| Opcional. O usuário deverá conceder permissões a |
| Opcional. Período de retenção CT (default: |
| Opcional. |
| Opcional. Default |
@Tables opções de parâmetros:
Opção | Descrição |
|---|---|
| Configurar apenas CT em nível de banco de dados, sem habilitação de tabela (também cria objetos de suporte DDL quando |
| Habilite o CT em todas as tabelas de usuários com chave primária. |
| Ativar CT em tabelas nos esquemas especificados |
| Habilitar CT em tabelas específicas |
Suporte a curingas | Exemplo: |
O que faz:
- Permite alterar o acompanhamento no nível do banco de dados, caso ainda não esteja ativado.
- Quando
@CreateDdlSupportingObjects = 1, cria uma tabela de auditoria DDL com controle de versão (lakeflowDdlAudit_1_7) e um trigger para capturar alterações de esquema - Habilita o CT em tabelas específicas (ignora tabelas sem chave primária).
- Concede permissões
VIEW CHANGE TRACKINGao usuário especificado. CLEANUPmodo: Remove objetos de suporte DDL
Comportamentos importantes:
- Ignora automaticamente tabelas sem chave primária (CDC é recomendado para esses casos).
- Descoberta inteligente com o parâmetro
'ALL' - Idempotente: Seguro para execução múltiplas vezes
lakeflowSetupChangeDataCapture
Habilita a captura de erros de captura (CDC) nos níveis de banco de dados e tabela, com suporte a DDL e gerenciamento de instâncias de captura.
Parâmetros:
Parâmetro | Descrição |
|---|---|
| Opcional. Tabelas para habilitar o CDC em |
| Opcional. O usuário deverá conceder permissões a |
| Opcional. |
| Opcional. |
@Tables opções de parâmetros:
Opção | Descrição |
|---|---|
| Configure o suporte a CDC e DDL somente no nível do banco de dados. |
| Ative o CDC em todas as tabelas de usuários. |
| Habilitar CDC em tabelas nos esquemas especificados |
| Habilitar o CDC em tabelas específicas |
O que faz:
-
Habilita o CDC no nível do banco de dados, caso ainda não esteja habilitado.
-
Cria uma tabela de acompanhamento da instância de captura (
lakeflowCaptureInstanceInfo_1_7) -
Cria procedimentos auxiliares para o gerenciamento de instâncias de captura:
lakeflowDisableOldCaptureInstance_1_7lakeflowMergeCaptureInstances_1_7lakeflowRefreshCaptureInstance_1_7
-
Cria um gatilho
ALTER TABLEpara o tratamento automático de alterações de esquema. -
Habilita o CDC em tabelas específicas.
-
Concede as permissões necessárias do CDC ao usuário especificado.
-
CLEANUPmodo: Remove todos os objetos de suporte DDL do CDC
Comportamentos importantes:
- Funciona com tabelas com ou sem chave primária.
- Gerencia automaticamente a rotação da instância de captura em caso de alterações de esquema.
- Idempotente: Seguro para execução múltiplas vezes
Suporte da plataforma
- SQL Server local (EngineEdition 1-4)
- Banco de Dados SQL do Azure (EngineEdition 5)
- Instância de gerenciamento Azure SQL (EngineEdition 8)
- Amazon RDS para SQL Server (detectado pelo padrão do nome do servidor)
Pré-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
Instruções de instalação
baixe e execute o script
- Faça o download da versão mais recente do script:
-
Execute o script:
- Abra o script de downloads no SQL Server Management Studio (SSMS), Azure Data Studio ou no seu cliente SQL preferido.
- Conecte-se à sua instância do SQL Server.
- Confirme se você está conectado ao banco de dados de destino onde deseja instalar os objetos utilitários.
- execução do roteiro.
-
Verificar instalação:
SQL-- Verify installation
SELECT dbo.lakeflowUtilityVersion() AS UtilityVersion;
SELECT dbo.lakeflowDetectPlatform() AS Platform;
Alternativa: execução usando a linha de comando
Se preferir usar sqlcmd:
sqlcmd -S YourServerName -d YourDatabase -E -i utility_script.sql
Substitua YourServerName e YourDatabase pelos nomes reais do seu servidor e banco de dados. Use -U username -P password em vez de -E se não estiver usando autenticação do Windows.
Exemplo: Corrigir permissões (somente do sistema)
-- Grant system permissions only
EXEC dbo.lakeflowFixPermissions
@User = 'myuser';
Exemplo: Corrigir permissões (com acesso à tabela)
-- Grant system permissions plus access to all tables
EXEC dbo.lakeflowFixPermissions
@User = 'myuser',
@Tables = 'ALL';
-- Grant permissions for specific schemas
EXEC dbo.lakeflowFixPermissions
@User = 'myuser',
@Tables = 'SCHEMAS:Sales,HR,Production';
-- Grant permissions for specific tables
EXEC dbo.lakeflowFixPermissions
@User = 'myuser',
@Tables = 'Sales.Orders,HR.Employees';
Exemplos: Alterar configuração de envio
Somente em nível de banco de dados
-- Setup CT infrastructure without enabling on tables
EXEC dbo.lakeflowSetupChangeTracking
@Tables = NULL,
@User = 'myuser';
Ativar em todas as tabelas
-- Enable CT on all user tables with primary keys
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'ALL',
@User = 'myuser';
Configuração baseada em esquema
-- Enable CT on all tables in specific schemas
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'SCHEMAS:Sales,HR',
@User = 'myuser',
@Retention = '3 DAYS';
Tabelas específicas
-- Enable CT on specific tables
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'dbo.Table1,Sales.Orders,HR.Employees',
@User = 'myuser';
Criar objetos de suporte a DDL
-- Enable CT and create the DDL audit table and trigger for schema-change capture
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'ALL',
@User = 'myuser',
@CreateDdlSupportingObjects = 1;
Exemplos: Configuração do CDC
Somente em nível de banco de dados
-- Setup CDC infrastructure without enabling on tables
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = NULL,
@User = 'myuser';
Ativar em todas as tabelas
-- Enable CDC on all user tables
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'ALL',
@User = 'myuser';
Tabelas específicas
-- Enable CDC on specific tables
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'dbo.Table1,Sales.Orders',
@User = 'myuser';
Assumir o controle de instâncias de captura pré-existentes
-- Allow Lakeflow to disable pre-existing (non-Lakeflow) capture instances
-- during schema change handling
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'ALL',
@User = 'myuser',
@AllowDisablePreExistingCaptureInstances = 1;
Exemplo: Abordagem híbrida
-- Step 1: Enable CT on tables with primary keys
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'ALL',
@User = 'myuser';
-- Step 2: Enable CDC on remaining tables (without primary keys)
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'ALL',
@User = 'myuser';
Exemplo: Limpeza
-- Remove CT DDL support objects
EXEC dbo.lakeflowSetupChangeTracking
@Mode = 'CLEANUP';
-- Remove CDC DDL support objects
EXEC dbo.lakeflowSetupChangeDataCapture
@Mode = 'CLEANUP';
Objetos de suporte DDL criados
Os seguintes objetos de suporte DDL são criados, dependendo se você usa acompanhamento de alterações ou CDC.
Para alterar a reprodução
Tipo de objeto | Nome | Descrição |
|---|---|---|
Tabela |
| História de alteração de DDL das lojas |
Trigger |
| Captura eventos |
Para o CDC
Tipo de objeto | Nome | Descrição |
|---|---|---|
Tabela |
| As faixas capturam instâncias |
Procedimento |
| Remove a instância de captura antiga |
Procedimento |
| mesclar dados entre instâncias |
Procedimento |
| Cria uma nova instância de captura. |
Trigger |
| Lida com alterações de esquema |
Alterar limitações de envio
- Requer chave primária: Tabelas sem chave primária não podem usar acompanhamento de alterações.
- O script ignora automaticamente tabelas sem chaves primárias e recomenda o uso do CDC em vez disso.
Comportamento específico da plataforma
- Banco de Dados SQL Azure : os procedimentos armazenados do sistema são acessíveis por default (nenhuma concessão
EXECUTEé necessária). - Exibição com escopo de servidor: Acesso limitado no Banco de Dados SQL Azure para exibição como
sys.change_tracking_databases.
Caminho de atualização
Para atualizar, execute novamente o script de objetos de utilidades e, em seguida, execute novamente os procedimentos de configuração. O script recria as funções de utilidades e remove apenas os objetos legados prefixados com replicantde liberações anteriores. Ele mantém os objetos de suporte Lakeflow DDL existentes no lugar, para que o trigger DDL atual continue capturando alterações de esquema até que você execute novamente os procedimentos de configuração. Para obter instruções, consulte o passo 1: Instalar ou atualizar objetos de utilidades.
O que acontece durante uma atualização:
- As funções de utilidade e os procedimentos de configuração definidos pelo script são descartados e recriados.
- Objetos prefixados com
replicantherdados de versões anteriores foram removidos. - Os objetos de suporte ao DDL do Lakeflow existentes (
lakeflowDdlAudit_*,lakeflowDdlAuditTrigger_*,lakeflowCaptureInstanceInfo_*e procedimentos e triggers relacionados) permanecem no lugar. A execução novamente dos procedimentos de configuração faz a transição deles para a nova versão. Os objetos da instância de captura se movem sempre que você executa novamentelakeflowSetupChangeDataCapture. A tabela de auditoria DDL e o trigger se movem apenas quando você executa novamentelakeflowSetupChangeTrackingcom@CreateDdlSupportingObjects = 1, pois são opcionais. - As opções de acompanhamento e CDC permanecem ativadas em suas mesas. A atualização não os desativa.
- As instâncias de captura do CDC não são afetadas pelo script de atualização.
Após executar o script de atualização, execute novamente os procedimentos de configuração para recriar objetos de suporte DDL para a nova versão:
lakeflowSetupChangeTracking: com@CreateDdlSupportingObjects = 1, transporta a tabela de auditoria DDL e o trigger paralakeflowDdlAudit_1_7. Passe esta flag se a sua instalação usar a captura de alterações de esquema DDL (ela possui uma tabelalakeflowDdlAudit) ou se os objetos permanecerem na versão antiga.lakeflowSetupChangeDataCapture: RecrialakeflowCaptureInstanceInfo_1_7e os procedimentos e gatilhos relacionados.
Ambos os procedimentos são idempotentes e podem ser reexecutados com segurança, utilizando os parâmetros de configuração originais.
Para reverter para uma versão anterior do script de objetos de utilidades, entre em contato com o suporte do Databricks.
Esquema de versionamento: objectName_majorVersion_minorVersion. Os objetos atuais usam o sufixo _1_7 .
Melhores práticas
- Sempre execução como
db_ownerou um usuário com privilégios equivalentes. - Teste primeiro em bancos de dados que não sejam de produção.
- Utilize a abordagem híbrida para uma cobertura abrangente.
- execução
lakeflowFixPermissionsapós a configuração para garantir o acesso adequado do usuário. - Considere os períodos de retenção com base na frequência de ingestão.
Solução de problemas
"O usuário que executa este script não é membro da função 'db_owner'"
soluções : Execute como um usuário com função db_owner
"Alterar conforme necessário não está habilitado no catálogo"
Soluções : Habilite o CT no nível do banco de dados ou deixe o procedimento lidar com ele automaticamente.
"A captura de dados de alterações (CDC) não está habilitada no catálogo"
Soluções : Habilite CDC no nível do banco de dados ou deixe o procedimento lidar com isso automaticamente.
"Tabelas ignoradas devido à ausência da chave primária"
soluções : Use lakeflowSetupChangeDataCapture para estas tabelas em vez disso
Integração de validação
Os seguintes objetos utilitários são validados pela estrutura de validação Java :
Objeto | Descrição |
|---|---|
| Valida a instalação de objetos de utilidades |
| Valida a configuração CT/CDC |
| Valida objetos de suporte DDL |
| Valida permissões |
Notas sobre migração
Se estiver atualizando de versões antigas de objetos de suporte DDL (era pré-objetos utilitários):
- O script limpa automaticamente os objetos legados.
- Não é necessária limpeza manual.
- A versão 1.1 consolida todas as funcionalidades em procedimentos unificados.
Recursos adicionais
- Prepare SQL Server para ingestão usando o script de objetos utilitários.
- Configure o Microsoft SQL Server para ingestão de dados no Databricks.
- Requisitos do usuário do banco de dados Microsoft SQL Server
- Rastrear alterações de dados (SQL Server) na documentação do SQL Server
- Sobre a alteração de acompanhamento (SQL Server) na documentação SQL Server
- O que é captura de dados de alterações (CDC) (CDC)? na documentação SQL Server