Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Material de referencia de acceso para el script de objetos de utilidad de SQL Server, incluidos componentes, parámetros y solución de problemas.
Información general
El script instala procedimientos almacenados de utilidad y funciones versionados para configurar tu base de datos de SQL Server para el proceso de ingesta en Lakeflow Connect. Las tareas de instalación incluyen:
- Administración de permisos
- Configurar el seguimiento de cambios (CT)
- Configuración de captura de datos de cambios (CDC)
- Detección de plataformas
- Compatibilidad de DDL con la creación de objetos para el seguimiento de cambios de esquema
Información de versión
- Versión actual: 1.7
- Versión principal: 1
- Versión menor: 7
- Función de versión:
lakeflowUtilityVersion()
Novedades en la versión 1.7
Highlights
- Corrección de un error de pérdida de datos en la evolución del esquema. En versiones anteriores, añadir una columna a una tabla que también tuviera una instancia de captura preexistente (no Lakeflow) podía ingerir la nueva columna como
NULL. Esto se corrige, junto con varios fallos relacionados en la evolución de esquemas (véase Correcciones de errores). - Los objetos de soporte DDL son ahora opcionales para el seguimiento de cambios. La tabla de auditoría DDL y el disparador ya no son necesarios para la evolución automática del esquema y están desactivados por defecto. Ponlo
@CreateDdlSupportingObjects = 1lakeflowSetupChangeTrackingsolo si aún los quieres. - Evolución de esquemas más fiable. Los cambios de restricción se clasifican para que los que no se rompen, como las teclas extranjeras, ya no desencadenan refrescos completos innecesarios.
Correcciones de errores
- Se corrigieron varios
ADD COLUMNfallos de evolución de esquemas, incluyendo tablas que usan enmascaramiento dinámico de datos, colaciones sensibles a mayúsculas minúsculas o binarias, y un bucle de reinicialización o ingestión interrumpida cuando hay una instancia de captura preexistente. - Se corrigieron errores de conflicto de clasificación en bases de datos con una clasificación de servidor no predeterminada.
- Se corrigieron los disparadores DDL que podían fallar al ejecutarse desde una sesión con opciones no predeterminadas
SET. - Corregido
lakeflowFixPermissionspara conceder los permisos requeridos con alcance de servidor desde la base de datos maestra. - Se solucionó la desinstalación (
CLEANUPmodo) dejando disparadores DDL huérfanos que podían bloquearALTER TABLE.
Otros cambios
- Añadido
@AllowDisablePreExistingCaptureInstancesenlakeflowSetupChangeDataCapture. Configúralo para1que Lakeflow Connect se haga cargo y gestione la instancia de captura CDC preexistente (no Lakeflow) de una mesa en lugar de dejarla en su lugar.
Componentes claves
Functions
lakeflowDetectPlatform()
Detecta el tipo de plataforma de SQL Server.
Devuelve: 'AZURE_SQL_DATABASE', 'AZURE_SQL_MANAGED_INSTANCE', 'AMAZON_RDS', 'ON_PREMISES'o 'UNKNOWN'
lakeflowUtilityVersion()
Detecta la versión de objetos de utilidad.
Devuelve: '1.7'
Procedimientos almacenados
lakeflowFixPermissions
Concede permisos necesarios a los usuarios para las operaciones de ingesta.
Parameters:
| Parámetro | Description |
|---|---|
@User (NVARCHAR(128)) |
Obligatorio. Nombre de usuario para conceder permisos a |
@Tables (NVARCHAR(MAX)) |
Optional. Controla el ámbito de permisos a nivel de tabla |
@Tables opciones de parámetros:
| Opción | Description |
|---|---|
NULL |
Conceder solo permisos de nivel de sistema (valor predeterminado) |
'ALL' |
Concesión de permisos en todas las tablas de usuario de la base de datos |
'SCHEMAS:Schema1,Schema2' |
Otorgar permisos en todas las tablas dentro de esquemas especificados |
'Schema.Table1,Schema.Table2' |
Otorgar permisos en tablas específicas |
| Compatibilidad con caracteres comodín | Ejemplo: 'Sales.*,HR.Employees' |
Lo que hace:
- Concesión de permisos
SELECTen las vistas del sistema requeridas (sys.objects,sys.tables,sys.columns, etc.) - Permisos
EXECUTEen procedimientos almacenados del sistema (sp_tables,sp_columns_100, etc.) - Opcionalmente concede permisos en
SELECTsobre tablas de usuario basándose en el parámetro@Tables. - Controla las diferencias específicas de la plataforma (Azure SQL Database, Instancia administrada, RDS, Local)
lakeflowSetupChangeTracking
Permite el seguimiento de cambios a nivel de base de datos y tabla, con soporte opcional para DDL (opt-in).
Parameters:
| Parámetro | Description |
|---|---|
@Tables (NVARCHAR(MAX)) |
Optional. Tablas para activar CT en |
@User (NVARCHAR(128)) |
Optional. Usuario al que conceder permisos |
@Retention (NVARCHAR(50)) |
Optional. Período de retención de CT (valor predeterminado: '2 DAYS') |
@Mode (NVARCHAR(10)) |
Optional.
'INSTALL' (valor predeterminado) o 'CLEANUP' |
@CreateDdlSupportingObjects (BIT) |
Optional. El valor predeterminado es 0. Configura para 1 crear la tabla de auditoría DDL y activar el seguimiento de cambios de esquema (DDL). La validación de configuración espera que este valor coincida con la configuración de tu pipeline. Si los valores no coinciden, la validación de configuración informa de un fallo. |
@Tables opciones de parámetros:
| Opción | Description |
|---|---|
NULL |
Configurar solo CT a nivel de base de datos, sin habilitar tablas (también crea objetos de soporte DDL cuando @CreateDdlSupportingObjects = 1) |
'ALL' |
Habilitar CT en todas las tablas de usuario con claves primarias |
'SCHEMAS:Schema1,Schema2' |
Habilitar CT en tablas dentro de esquemas definidos |
'Schema.Table1,Schema.Table2' |
Habilitar CT en tablas específicas |
| Compatibilidad con caracteres comodín | Ejemplo: 'Sales.*,HR.Employees' |
Lo que hace:
- Habilita el seguimiento de cambios en el nivel de base de datos si aún no está habilitado
- Cuando
@CreateDdlSupportingObjects = 1, crea una tabla de auditoría DDL versionada (lakeflowDdlAudit_1_7) y un disparador para capturar los cambios de esquema - Habilita CT en tablas especificadas (omite tablas sin claves principales)
- Concede
VIEW CHANGE TRACKINGpermisos al usuario especificado -
CLEANUPmode: quita objetos de soporte de DDL
Comportamientos importantes:
- Omite automáticamente las tablas sin claves principales (se recomienda CDC para estas)
- Detección inteligente con el
'ALL'parámetro - Idempotente: seguro para ejecutarse varias veces
lakeflowSetupChangeDataCapture
Habilita CDC en los niveles de base de datos y tablas con compatibilidad con DDL y administración de instancias de captura.
Parameters:
| Parámetro | Description |
|---|---|
@Tables (NVARCHAR(MAX)) |
Optional. Tablas para habilitar CDC en |
@User (NVARCHAR(128)) |
Optional. Usuario al que conceder permisos |
@Mode (NVARCHAR(10)) |
Optional.
'INSTALL' (valor predeterminado) o 'CLEANUP' |
@AllowDisablePreExistingCaptureInstances (BIT) |
Optional.
0 (por defecto) deja intactas instancias de captura preexistentes que no son Lakeflow durante el manejo de cambios de esquema. Configurado para 1 permitir que Lakeflow Connect se haga cargo y desactive instancias de captura preexistentes. |
@Tables opciones de parámetros:
| Opción | Description |
|---|---|
NULL |
Configurar solo la compatibilidad con CDC y DDL a nivel de base de datos |
'ALL' |
Habilitar CDC en todas las tablas de usuario |
'SCHEMAS:Schema1,Schema2' |
Habilitar CDC en tablas en esquemas especificados |
'Schema.Table1,Schema.Table2' |
Habilitar CDC en tablas específicas |
Lo que hace:
- Habilita CDC en el nivel de base de datos si aún no está habilitado
- Crea una tabla de seguimiento de instancias de captura (
lakeflowCaptureInstanceInfo_1_7) - Crea procedimientos auxiliares para la administración de instancias de captura:
lakeflowDisableOldCaptureInstance_1_7lakeflowMergeCaptureInstances_1_7lakeflowRefreshCaptureInstance_1_7
- Crea un
ALTER TABLEdesencadenador para el control automático de cambios de esquema - Habilita CDC en tablas especificadas
- Concede permisos CDC necesarios al usuario especificado.
-
CLEANUPmode: elimina todos los objetos de soporte de CDC DDL
Comportamientos importantes:
- Funciona con tablas con o sin claves principales
- Controla automáticamente la rotación de instancias de captura en los cambios de esquema.
- Idempotente: seguro para ejecutarse varias veces
Compatibilidad con plataformas
- SQL Server en las instalaciones (EngineEdition 1-4)
- Azure SQL Database (EngineEdition 5)
- Instancia administrada de Azure SQL (EngineEdition 8)
- Amazon RDS para SQL Server (detectado por el patrón de nombre de servidor)
Prerrequisitos
- El usuario que ejecuta el script debe ser miembro del
db_ownerrol - Para la configuración de CT: El seguimiento de cambios debe estar disponible en dicha plataforma
- ** Para la configuración de CDC, la captura de cambios de datos debe estar habilitada en la plataforma.
Instrucciones de instalación
Descarga y ejecución del script
Descargue la versión más reciente del script:
Ejecute el script:
- Abra el script descargado en SQL Server Management Studio (SSMS), Azure Data Studio o su cliente SQL preferido.
- Conéctese a la instancia de SQL Server.
- Confirme que está conectado a la base de datos de destino donde desea instalar los objetos de utilidad.
- Ejecute el script.
Compruebe la instalación:
-- Verify installation SELECT dbo.lakeflowUtilityVersion() AS UtilityVersion; SELECT dbo.lakeflowDetectPlatform() AS Platform;
Alternativa: Ejecutar con la línea de comandos
Si prefiere usar sqlcmd:
sqlcmd -S YourServerName -d YourDatabase -E -i utility_script.sql
Nota:
Reemplace YourServerName y YourDatabase por los nombres reales de servidor y base de datos. Use -U username -P password en lugar de -E si no usa la autenticación de Windows.
Ejemplo: Corrección de permisos (solo sistema)
-- Grant system permissions only
EXEC dbo.lakeflowFixPermissions
@User = 'myuser';
Ejemplo: Corrección de permisos (con acceso a tablas)
-- 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';
Ejemplos: Configuración del seguimiento de cambios
Solo a nivel de base de datos
-- Setup CT infrastructure without enabling on tables
EXEC dbo.lakeflowSetupChangeTracking
@Tables = NULL,
@User = 'myuser';
Habilitar en todas las tablas
-- Enable CT on all user tables with primary keys
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'ALL',
@User = 'myuser';
Configuración basada en esquemas
-- Enable CT on all tables in specific schemas
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'SCHEMAS:Sales,HR',
@User = 'myuser',
@Retention = '3 DAYS';
Tablas específicas
-- Enable CT on specific tables
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'dbo.Table1,Sales.Orders,HR.Employees',
@User = 'myuser';
Crear objetos de soporte DDL
-- Enable CT and create the DDL audit table and trigger for schema-change capture
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'ALL',
@User = 'myuser',
@CreateDdlSupportingObjects = 1;
Ejemplos: configuración CDC
Solo a nivel de base de datos
-- Setup CDC infrastructure without enabling on tables
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = NULL,
@User = 'myuser';
Habilitar en todas las tablas
-- Enable CDC on all user tables
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'ALL',
@User = 'myuser';
Tablas específicas
-- Enable CDC on specific tables
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'dbo.Table1,Sales.Orders',
@User = 'myuser';
Toma posesión de instancias de captura preexistentes
-- Allow Lakeflow to disable pre-existing (non-Lakeflow) capture instances
-- during schema change handling
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'ALL',
@User = 'myuser',
@AllowDisablePreExistingCaptureInstances = 1;
Ejemplo: Enfoque híbrido
-- 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';
Ejemplo: Limpieza
-- Remove CT DDL support objects
EXEC dbo.lakeflowSetupChangeTracking
@Mode = 'CLEANUP';
-- Remove CDC DDL support objects
EXEC dbo.lakeflowSetupChangeDataCapture
@Mode = 'CLEANUP';
Objetos de compatibilidad con DDL creados
Se crean los siguientes objetos de soporte DDL, en función de si utiliza el seguimiento de cambios o CDC.
Para el seguimiento de cambios
| Tipo de objeto | Nombre | Description |
|---|---|---|
| Table | lakeflowDdlAudit_1_7 |
Almacena el historial de cambios de DDL. |
| Trigger | lakeflowDdlAuditTrigger_1_7 |
Captura eventos ALTER TABLE |
Para CDC
| Tipo de objeto | Nombre | Description |
|---|---|---|
| Table | lakeflowCaptureInstanceInfo_1_7 |
Realiza un seguimiento de las instancias de captura |
| Procedimiento | lakeflowDisableOldCaptureInstance_1_7 |
Quita la instancia de captura antigua. |
| Procedimiento | lakeflowMergeCaptureInstances_1_7 |
Combina datos entre instancias |
| Procedimiento | lakeflowRefreshCaptureInstance_1_7 |
Crea una nueva instancia de captura. |
| Trigger | lakeflowAlterTableTrigger_1_7 |
Gestiona los cambios de esquema. |
Limitaciones del seguimiento de cambios
- Requiere claves principales: las tablas sin claves principales no pueden usar el seguimiento de cambios.
- El script omite automáticamente las tablas sin PKs y recomienda usar CDC como alternativa.
Comportamiento específico de la plataforma
- Azure SQL Database: los procedimientos almacenados del sistema son accesibles de forma predeterminada (sin
EXECUTEconcesiones necesarias). - Vistas con ámbito de servidor: acceso limitado en Azure SQL Database para vistas como
sys.change_tracking_databases.
Ruta de actualización
Para actualizar, vuelve a ejecutar el script de objetos de utilidad y luego vuelve a ejecutar los procedimientos de configuración. El script recrea las funciones de utilidad y elimina solo objetos heredados replicantcon prefijo de versiones anteriores. Deja tus objetos de soporte DDL de Lakeflow en su lugar, así que el disparador DDL actual sigue capturando cambios en el esquema hasta que vuelves a ejecutar los procedimientos de configuración. Para las instrucciones, consulta el Paso 1: Instalar o actualizar objetos de utilidad.
Qué ocurre durante una actualización:
- Las funciones de utilidad y los procedimientos de configuración definidos por el script se eliminan y se recrean.
- Se eliminan los objetos heredados
replicantcon prefijo -de versiones anteriores. - Los objetos de soporte existentes de Lakeflow DDL (
lakeflowDdlAudit_*,lakeflowDdlAuditTrigger_*,lakeflowCaptureInstanceInfo_*, y procedimientos y disparadores relacionados) permanecen en su lugar. Al volver a ejecutar los procedimientos de configuración, se trasladan a la nueva versión. Los objetos de la instancia de captura se mueven cada vez que vuelves a ejecutarlakeflowSetupChangeDataCapture. La tabla de auditoría DDL y el trigger solo se mueven cuando vuelves a ejecutarlakeflowSetupChangeTrackingcon@CreateDdlSupportingObjects = 1, porque son opt-in. - El seguimiento de cambios y CDC permanecen habilitados en las tablas. La actualización no las deshabilita.
- Las instancias de captura CDC no se ven afectadas por el script de actualización.
Después de ejecutar el script de actualización, vuelva a ejecutar los procedimientos de instalación para volver a crear objetos de compatibilidad con DDL para la nueva versión:
-
lakeflowSetupChangeTracking: con@CreateDdlSupportingObjects = 1, lleva la tabla de auditoría DDL y se reenvía alakeflowDdlAudit_1_7. Pasa esta bandera si tu instalación usa captura de cambio de esquema DDL (tiene unalakeflowDdlAudittabla), o si los objetos permanecen en la versión antigua. -
lakeflowSetupChangeDataCapture: vuelve a crearlakeflowCaptureInstanceInfo_1_7y los procedimientos y desencadenadores relacionados.
Ambos procedimientos son idempotentes y seguros para volver a ejecutarse con los parámetros de configuración originales.
Nota:
Para revertir a una versión anterior del script de objetos de utilidad, contacte con el soporte de Databricks.
Esquema de control de versiones: objectName_majorVersion_minorVersion. Los objetos actuales usan el _1_7 sufijo.
procedimientos recomendados
- Ejecute siempre como
db_ownero un usuario con privilegios equivalentes. - Pruebe primero en bases de datos que no son de producción.
- Use el enfoque híbrido para una cobertura completa.
- Ejecute
lakeflowFixPermissionsdespués de la instalación para garantizar el acceso adecuado al usuario. - Considere los períodos de retención en función de la frecuencia de ingesta.
Solución de problemas
"El usuario que ejecuta este script no es un miembro de rol "db_owner"
Solución: Ejecutar como usuario con db_owner rol
"El seguimiento de cambios no está habilitado en el catálogo"
Solución: habilite CT en el nivel de base de datos o deje que el procedimiento lo controle automáticamente.
"La captura de datos modificados no está habilitada en el catálogo"
Solución: habilite CDC en el nivel de base de datos o permita que el procedimiento lo controle automáticamente.
"Tablas omitidas debido a la falta de claves principales"
Solución: use lakeflowSetupChangeDataCapture en su lugar para estas tablas.
Integración de validación
El marco de validación de Java valida los siguientes objetos de utilidad:
| Objeto | Description |
|---|---|
SqlServerUtilityObjectsSetupValidator |
Valida la instalación de objetos de utilidad |
SqlServerChangeDataManagementSetupValidator |
Valida la configuración de CT/CDC. |
SqlServerDdlSupportObjectsSetupValidator |
Valida los objetos de compatibilidad con DDL. |
SqlServerPermissionsSetupValidator |
Valida los permisos. |
Notas de migración
Si la actualización desde versiones anteriores de DDL admite objetos (era de objetos anteriores a la utilidad):
- El script limpia automáticamente los objetos heredados.
- No se requiere ninguna limpieza manual.
- La versión 1.1 consolida toda la funcionalidad en procedimientos unificados.
Recursos adicionales
- Preparación de SQL Server para la ingesta mediante el script de objetos de utilidad
- Configuración de Microsoft SQL Server para la ingesta en Azure Databricks
- Requisitos de usuario de base de datos de Microsoft SQL Server
- Seguimiento de los cambios de datos (SQL Server) en la documentación de SQL Server
- Acerca de Change Tracking (SQL Server) en la documentación de SQL Server
- ¿Qué es la captura de datos modificados (CDC)? en la documentación de SQL Server