Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Documents de référence d’accès pour le script d’objets utilitaires SQL Server, y compris les composants, les paramètres et la résolution des problèmes.
Aperçu
Le script installe des procédures stockées et des fonctions utilitaires avec version pour configurer votre base de données SQL Server pour l’ingestion dans Lakeflow Connect. Les tâches d’installation sont les suivantes :
- Gestion des autorisations
- Configuration du suivi des modifications (CT)
- Configuration de la capture des changements de données (CDC)
- Détection des plates-formes
- DDL prend en charge la création d’objets pour le suivi des modifications de schéma
Détails de version
- Version actuelle : 1.7
- Version principale : 1
- Version mineure : 7
- Fonction de version :
lakeflowUtilityVersion()
Nouveautés de la version 1.7
Highlights
- Corrige un bug de perte de données dans l’évolution du schéma. Dans les versions antérieures, ajouter une colonne à une table qui possède également une instance de capture préexistante (non-Lakeflow) pouvait ingérer la nouvelle colonne sous forme
NULLde . Cela est corrigé, ainsi que plusieurs échecs liés à l’évolution du schéma (voir Corrections de bugs). - Les objets de support DDL sont désormais optionnels pour le suivi des changements. La table d’audit DDL et le déclencheur ne sont plus nécessaires pour l’évolution automatique du schéma et sont désactivés par défaut. Ne posez
@CreateDdlSupportingObjects = 1que silakeflowSetupChangeTrackingvous en voulez toujours. - Évolution de schéma plus fiable. Les modifications de contraintes sont classées de sorte que celles non cassées, comme les clés étrangères, ne déclenchent plus de rafraîchissements complets inutiles.
Corrections de bugs
- Correction de plusieurs
ADD COLUMNéchecs d’évolution de schéma, notamment des tables utilisant le masquage dynamique des données, des collations sensibles à la casse ou binaires, ainsi qu’une boucle de réinitialisation ou une ingestion interrompue lorsqu’une instance de capture préexistante est présente. - Correction des erreurs de conflit de collation sur les bases de données avec une collation serveur non par défaut.
- Correction des déclencheurs DDL qui pouvaient échouer lorsqu’on l’exécutait depuis une session avec des options non par défaut
SET. - Corrigé
lakeflowFixPermissionspour accorder les autorisations requises à portée serveur depuis la base de données principale. - Correction de la désinstallation (
CLEANUPmode) laissant des déclencheurs DDL orphelins qui pourraient bloquerALTER TABLE.
Autres modifications
- Ajouté
@AllowDisablePreExistingCaptureInstancesàlakeflowSetupChangeDataCapture. Régle-le pour1permettre à Lakeflow Connect de prendre le contrôle et de gérer l’instance de capture CDC préexistante (non Lakeflow) d’une table au lieu de la laisser en place.
Composants clés
Functions
lakeflowDetectPlatform()
Détecte le type de plateforme SQL Server.
Retourne : 'AZURE_SQL_DATABASE', 'AZURE_SQL_MANAGED_INSTANCE', 'AMAZON_RDS', 'ON_PREMISES', ou 'UNKNOWN'
lakeflowUtilityVersion()
Détecte la version des objets utilitaires.
Retourne : '1.7'
Procédures stockées
lakeflowFixPermissions
Accorde des autorisations requises aux utilisateurs pour les opérations d’ingestion.
Paramètres :
| Paramètre | Descriptif |
|---|---|
@User (NVARCHAR(128)) |
Obligatoire. Nom d’utilisateur pour accorder des autorisations à |
@Tables (NVARCHAR(MAX)) |
Optional. Contrôle l’étendue des autorisations au niveau de la table |
@Tables options de paramètre :
| Choix | Descriptif |
|---|---|
NULL |
Accorder uniquement des autorisations au niveau du système (par défaut) |
'ALL' |
Accorder des autorisations sur toutes les tables utilisateur de la base de données |
'SCHEMAS:Schema1,Schema2' |
Accorder des autorisations sur toutes les tables dans les schémas spécifiés |
'Schema.Table1,Schema.Table2' |
Accorder des autorisations sur des tables spécifiques |
| Prise en charge des caractères génériques | Exemple : 'Sales.*,HR.Employees' |
Qu’est-ce qu’il fait :
- Octroie sur les vues du système requises
SELECT(sys.objects,sys.tables,sys.columns, etc.) - Accorde
EXECUTEsur les procédures stockées système (sp_tables,sp_columns_100, etc.) - Accorde éventuellement des autorisations
SELECTsur les tables d'utilisateur selon le paramètre@Tables - Gère les différences spécifiques à la plateforme (Azure SQL Database, Managed Instance, RDS, Local)
lakeflowSetupChangeTracking
Permet le suivi des modifications au niveau de la base de données et des tables, avec un support optionnel DDL (opt-in).
Paramètres :
| Paramètre | Descriptif |
|---|---|
@Tables (NVARCHAR(MAX)) |
Optional. Tables pour activer CT sur |
@User (NVARCHAR(128)) |
Optional. Utilisateur pour octroyer des autorisations à |
@Retention (NVARCHAR(50)) |
Optional. Période de rétention CT (par défaut : '2 DAYS') |
@Mode (NVARCHAR(10)) |
Optional.
'INSTALL' (par défaut) ou 'CLEANUP' |
@CreateDdlSupportingObjects (BIT) |
Optional.
0par défaut . Définissez pour 1 créer la table d’audit DDL et déclencher le suivi des changements de schéma (DDL). La validation de configuration attend que cette valeur corresponde à la configuration de votre pipeline. Si les valeurs ne correspondent pas, la validation de configuration signale un échec. |
@Tables options de paramètre :
| Choix | Descriptif |
|---|---|
NULL |
Configurez uniquement le CT au niveau de la base de données, sans activation de table (crée aussi des objets de support DDL lorsque @CreateDdlSupportingObjects = 1) |
'ALL' |
Activer CT sur toutes les tables utilisateur avec des clés primaires |
'SCHEMAS:Schema1,Schema2' |
Activer CT sur des tables dans des schémas spécifiés |
'Schema.Table1,Schema.Table2' |
Activer CT sur des tables spécifiques |
| Prise en charge des caractères génériques | Exemple : 'Sales.*,HR.Employees' |
Qu’est-ce qu’il fait :
- Active le suivi des modifications au niveau de la base de données s’il n’est pas déjà activé
- Lorsque
@CreateDdlSupportingObjects = 1, crée une table d’audit DDL versionnée (lakeflowDdlAudit_1_7) et un déclencheur pour capturer les modifications du schéma - Active la fonctionnalité CT sur les tables spécifiées (ignore les tables sans clés primaires)
- Octroie des
VIEW CHANGE TRACKINGautorisations à l’utilisateur spécifié -
CLEANUPmode: Supprime les objets de support DDL
Comportements importants :
- Passe automatiquement les tables sans clés primaires (CDC est recommandée pour ces tables)
- Découverte intelligente avec le
'ALL'paramètre - Idempotent : Sans risque d'exécuter plusieurs fois
lakeflowSetupChangeDataCapture
Active la capture de données modifiées (CDC) au niveau de la base de données et de la table avec la prise en charge des DDL et la gestion des instances de capture.
Paramètres :
| Paramètre | Descriptif |
|---|---|
@Tables (NVARCHAR(MAX)) |
Optional. Tables pour activer la capture de données modifiées sur |
@User (NVARCHAR(128)) |
Optional. Utilisateur pour octroyer des autorisations à |
@Mode (NVARCHAR(10)) |
Optional.
'INSTALL' (par défaut) ou 'CLEANUP' |
@AllowDisablePreExistingCaptureInstances (BIT) |
Optional.
0 (par défaut) laisse intactes les instances de capture préexistantes, non-Lakeflow, pendant la gestion des modifications de schéma. Réglez pour 1 permettre à Lakeflow Connect de prendre possession et de désactiver les instances de capture préexistantes. |
@Tables options de paramètre :
| Choix | Descriptif |
|---|---|
NULL |
Configurer uniquement la prise en charge des captures de données de changement (CDC) et DDL au niveau de la base de données |
'ALL' |
Activer CDC sur toutes les tables utilisateur |
'SCHEMAS:Schema1,Schema2' |
Activer la capture de données modifiées sur des tables dans des schémas spécifiés |
'Schema.Table1,Schema.Table2' |
Activer la capture de données modifiées (CDC) sur des tables spécifiques |
Qu’est-ce qu’il fait :
- Active le Change Data Capture au niveau de la base de données si ce n'est pas déjà activé.
- Crée une table de suivi d’instance de capture (
lakeflowCaptureInstanceInfo_1_7) - Crée des procédures d’assistance pour la gestion des instances de capture :
lakeflowDisableOldCaptureInstance_1_7lakeflowMergeCaptureInstances_1_7lakeflowRefreshCaptureInstance_1_7
- Crée un
ALTER TABLEdéclencheur pour la gestion automatique des modifications de schéma - Active la CDC (Capture de Données Modifiées) sur les tables spécifiées
- Octroie les autorisations cdc requises à l’utilisateur spécifié
-
CLEANUPmode : Supprime tous les objets support de DDL CDC
Comportements importants :
- Fonctionne avec des tables avec ou sans clés primaires
- Gère automatiquement la rotation des instances de capture sur les modifications de schéma
- Idempotent : Sans risque d'exécuter plusieurs fois
Support de la plateforme
- SQL Server sur site (EngineEdition 1-4)
- Azure SQL Database (EngineEdition 5)
- Azure SQL Managed Instance (EngineEdition 8)
- Amazon RDS pour SQL Server (détecté par le modèle de nom de serveur)
Prerequisites
- L’utilisateur exécutant le script doit être membre du
db_ownerrôle - Pour l’installation de CT : le suivi des modifications doit être disponible sur la plateforme
- Pour configurer la capture des modifications de données : la capture des modifications de données doit être intégrée à la plateforme.
Instructions d’installation
Télécharger et exécuter le script
Téléchargez la dernière version du script :
Exécutez le script :
- Ouvrez le script téléchargé dans SQL Server Management Studio (SSMS), Azure Data Studio ou votre client SQL préféré.
- Connectez-vous à votre instance SQL Server.
- Vérifiez que vous êtes connecté à la base de données cible où vous souhaitez installer les objets utilitaires.
- Exécutez le script.
Vérifiez l’installation :
-- Verify installation SELECT dbo.lakeflowUtilityVersion() AS UtilityVersion; SELECT dbo.lakeflowDetectPlatform() AS Platform;
Alternative : Exécuter à l’aide de la ligne de commande
Si vous préférez utiliser sqlcmd:
sqlcmd -S YourServerName -d YourDatabase -E -i utility_script.sql
Note
Remplacez YourServerName et YourDatabase par les noms réels de votre serveur et de votre base de données. Utilisez -U username -P password au lieu de -E si vous n'utilisez pas l'authentification Windows.
Exemple : Corriger les autorisations (système uniquement)
-- Grant system permissions only
EXEC dbo.lakeflowFixPermissions
@User = 'myuser';
Exemple : Corriger les permissions (avec accès à la table)
-- 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';
Exemples : Configuration du suivi des modifications
Au niveau de la base de données uniquement
-- Setup CT infrastructure without enabling on tables
EXEC dbo.lakeflowSetupChangeTracking
@Tables = NULL,
@User = 'myuser';
Activer sur toutes les tables
-- Enable CT on all user tables with primary keys
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'ALL',
@User = 'myuser';
Configuration basée sur le schéma
-- Enable CT on all tables in specific schemas
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'SCHEMAS:Sales,HR',
@User = 'myuser',
@Retention = '3 DAYS';
Tables spécifiques
-- Enable CT on specific tables
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'dbo.Table1,Sales.Orders,HR.Employees',
@User = 'myuser';
Créer des objets de support DDL
-- Enable CT and create the DDL audit table and trigger for schema-change capture
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'ALL',
@User = 'myuser',
@CreateDdlSupportingObjects = 1;
Exemples : configuration CDC
Au niveau de la base de données uniquement
-- Setup CDC infrastructure without enabling on tables
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = NULL,
@User = 'myuser';
Activer sur toutes les tables
-- Enable CDC on all user tables
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'ALL',
@User = 'myuser';
Tables spécifiques
-- Enable CDC on specific tables
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'dbo.Table1,Sales.Orders',
@User = 'myuser';
Prendre possession d’instances de capture préexistantes
-- Allow Lakeflow to disable pre-existing (non-Lakeflow) capture instances
-- during schema change handling
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'ALL',
@User = 'myuser',
@AllowDisablePreExistingCaptureInstances = 1;
Exemple : approche hybride
-- 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';
Exemple : Nettoyage
-- Remove CT DDL support objects
EXEC dbo.lakeflowSetupChangeTracking
@Mode = 'CLEANUP';
-- Remove CDC DDL support objects
EXEC dbo.lakeflowSetupChangeDataCapture
@Mode = 'CLEANUP';
Objets de support DDL créés
Les objets de prise en charge DDL suivants sont créés, selon que vous utilisez le suivi des modifications (change tracking) ou la capture de données modifiées (CDC).
Pour le suivi des modifications
| Type d’objet | Nom | Descriptif |
|---|---|---|
| Table | lakeflowDdlAudit_1_7 |
Stocke l’historique des modifications DDL |
| Déclencheur | lakeflowDdlAuditTrigger_1_7 |
Capture les ALTER TABLE événements |
Pour cdc
| Type d’objet | Nom | Descriptif |
|---|---|---|
| Table | lakeflowCaptureInstanceInfo_1_7 |
Effectue le suivi des instances de capture |
| Procedure | lakeflowDisableOldCaptureInstance_1_7 |
Supprime l’ancienne instance de capture |
| Procedure | lakeflowMergeCaptureInstances_1_7 |
Fusionne les données entre les instances |
| Procedure | lakeflowRefreshCaptureInstance_1_7 |
Crée une instance de capture |
| Déclencheur | lakeflowAlterTableTrigger_1_7 |
Gère les modifications de schéma |
Limitations du suivi des modifications
- Nécessite des clés primaires : les tables sans clés primaires ne peuvent pas utiliser le suivi des modifications.
- Le script ignore automatiquement les tables sans clé primaire et recommande d’utiliser la capture de données modifiées (CDC) à la place.
Comportement spécifique à la plateforme
- Azure SQL Database : les procédures stockées système sont accessibles par défaut (aucune subvention n’est
EXECUTEnécessaire). - Vues délimitées au serveur : accès limité dans Azure SQL Database pour les vues telles que
sys.change_tracking_databases.
Chemin de mise à niveau
Pour mettre à jour, relancez le script utilitaire des objets, puis relancez les procédures de configuration. Le script recrée les fonctions utilitaires et ne supprime que les objets hérités replicantavec préfixe -des versions précédentes. Cela laisse vos objets de support DDL Lakeflow existants en place, donc le déclencheur DDL actuel continue de capturer les changements de schéma jusqu’à ce que vous relancez les procédures de configuration. Pour les instructions, voir l’étape 1 : Installer ou mettre à jour des objets utilitaires.
Que se passe-t-il pendant une mise à niveau :
- Les fonctions utilitaires et les procédures d’installation définies par le script sont supprimées et recréées.
- Les objets hérités
replicantavec préfixe - des versions antérieures sont supprimés. - Les objets de support DDL Lakeflow existants (
lakeflowDdlAudit_*,lakeflowDdlAuditTrigger_*,lakeflowCaptureInstanceInfo_*, et les procédures et déclencheurs associés) sont laissés en place. Relancer les procédures de configuration les fait passer à la nouvelle version. Les objets d’instance de capture bougent chaque fois que vous relancezlakeflowSetupChangeDataCapture. La table d’audit DDL et le déclencheur ne bougent que lorsque vous relancezlakeflowSetupChangeTrackingavec@CreateDdlSupportingObjects = 1, car ils sont volontaires. - Le suivi des modifications et la capture de données modifiées restent activés sur vos tables. La mise à niveau ne les désactive pas.
- Les instances de capture cdc ne sont pas affectées par le script de mise à niveau.
Après avoir exécuté le script de mise à niveau, réexécutez les procédures d’installation pour recréer des objets de prise en charge DDL pour la nouvelle version :
-
lakeflowSetupChangeTracking: avec@CreateDdlSupportingObjects = 1, porte la table d’audit DDL et déclenche le transfert verslakeflowDdlAudit_1_7. Passez ce drapeau si votre installation utilise la capture de changement de schéma DDL (elle a unelakeflowDdlAudittable), ou si les objets restent sur l’ancienne version. -
lakeflowSetupChangeDataCapture: recrée et les procédures et déclencheurslakeflowCaptureInstanceInfo_1_7associés.
Les deux procédures sont idempotentes et sécurisées à réexécuter avec les paramètres d’installation d’origine.
Note
Pour revenir à une version antérieure du script des objets utilitaires, contactez le support Databricks.
Schéma de contrôle de version : objectName_majorVersion_minorVersion. Les objets actuels utilisent le _1_7 suffixe.
Meilleures pratiques
- Exécutez toujours en tant qu’utilisateur
db_owneravec des privilèges équivalents. - Testez d’abord les bases de données hors production.
- Utilisez l’approche hybride pour une couverture complète.
- Exécutez
lakeflowFixPermissionsaprès l’installation pour garantir un accès utilisateur approprié. - Tenez compte des périodes de rétention en fonction de votre fréquence d’ingestion.
Résolution des problèmes
« L’utilisateur exécutant ce script n’est pas un membre de rôle « db_owner »
Solution : Exécuter en tant qu’utilisateur avec le rôle db_owner
« Le suivi des modifications n’est pas activé sur le catalogue »
Solution : activez CT au niveau de la base de données ou laissez la procédure la gérer automatiquement
« La capture de données modifiées n’est pas activée sur le catalogue »
Solution : activer le CDC au niveau de la base de données elle-même ou laisser la procédure le gérer automatiquement
« Tables ignorées en raison de clés primaires manquantes »
Solution : Utiliser lakeflowSetupChangeDataCapture pour ces tables à la place
Intégration de la validation
Les objets utilitaires suivants sont validés par l’infrastructure de validation Java :
| Objet | Descriptif |
|---|---|
SqlServerUtilityObjectsSetupValidator |
Valide l’installation des objets utilitaires |
SqlServerChangeDataManagementSetupValidator |
Valide la configuration CT/CDC |
SqlServerDdlSupportObjectsSetupValidator |
Valide les objets de support DDL |
SqlServerPermissionsSetupValidator |
Valide les autorisations |
Notes de migration
Si vous mettez à niveau à partir d'anciennes versions d'objets de support DDL (avant l'ère des objets utilitaires) :
- Le script nettoie automatiquement les objets hérités.
- Aucun nettoyage manuel n’est nécessaire.
- La version 1.1 consolide toutes les fonctionnalités dans des procédures unifiées.
Ressources supplémentaires
- Préparer SQL Server pour l’ingestion à l’aide du script d’objets utilitaires
- Configurer Microsoft SQL Server pour l’ingestion dans Azure Databricks
- Configuration requise pour l’utilisateur de base de données Microsoft SQL Server
- Suivre les modifications de données (SQL Server) dans la documentation SQL Server
- À propos du suivi des modifications (SQL Server) dans la documentation DE SQL Server
- Qu’est-ce que la capture des changements de données (CDC) ? dans la documentation SQL Server