Scripts de prédéploiement et de post-déploiement pour Fabric Data Warehouse (préversion)

S’applique à :✅Entrepôt dans Microsoft Fabric

Important

Cette fonctionnalité est en version préliminaire.

Les scripts de prédéploiement et de post-déploiement vous permettent d’exécuter des commandes de Transact-SQL personnalisées dans le cadre du déploiement d’un entrepôt dans Fabric. Utilisez des scripts de prédéploiement et de post-déploiement pour nettoyer les données, renseigner des données de référence ou appliquer des paramètres de sécurité SQL qui ne sont pas exprimés dans le schéma de l’entrepôt.

Dans un Fabric Data Warehouse, un script de prédéploiement ou de post-déploiement est une requête SQL partagée. Vous pouvez créer ces scripts dans un projet de base de données SQL et les désigner à partir du portail Fabric. La désignation est stockée en tant que métadonnées au niveau de l’entrepôt et est validée pour le contrôle de code source dans le fichier de l’entrepôt .sqlproj , de sorte qu’elle effectue des allers-retours via Git et des pipelines de déploiement sans réapplication manuelle.

Cet article explique quels sont les scripts de prédéploiement et de post-déploiement, comment les configurer dans le portail Fabric, comment ils se comportent avec le contrôle de code source et les pipelines de déploiement, et comment les créer dans Visual Studio Code et SQL Server Management Studio (SSMS).

Important

Passez toujours en revue les scripts et paramètres de déploiement avant la publication. Testez d’abord dans les environnements de développement et de test pour éviter toute perte de données involontaire.

Qu’est-ce que les scripts de prédéploiement et de post-déploiement ?

Lorsque vous connectez un espace de travail au contrôle de version, chaque entrepôt apparaît comme un projet de base de données SQL : un script contrôlé par le code source des objets SQL qui composent le schéma de l’entrepôt (tables, vues, procédures stockées et fonctions). Chaque objet est enregistré sous forme de fichier .sql qui contient sa syntaxe DDL (langage de définition de données), telle que CREATE TABLE. Les objets décrivent l’état souhaité du schéma et le processus de déploiement compare cet état souhaité à l’entrepôt cible et génère un script T-SQL différentiel qui crée, modifie ou supprime des objets afin que la cible corresponde au projet.

Les scripts de prédéploiement et de post-déploiement étendent ce processus avec Transact-SQL qui s’exécute autour du déploiement du schéma :

  • Un script de prédéploiement s’exécute avant l’application du plan de déploiement de schéma.
  • Un script post-déploiement s’exécute une fois le plan de déploiement de schéma terminé.

Un script de prédéploiement ou de post-déploiement est l’une des requêtes partagées stockées sous le dossier Requêtes de l’entrepôt. Un entrepôt prend en charge au plus un script de prédéploiement et un script post-déploiement. La désignation est stockée en tant que métadonnées au niveau de l’entrepôt plutôt que de dupliquer le contenu du script, de sorte qu’elle ajoute une surcharge de stockage négligeable.

Étant donné que chaque script spécifié s’exécute chaque fois que l’entrepôt est déployé, créez le code Transact-SQL de manière à ce qu’il soit idempotent (pouvant être exécuté plusieurs fois sans risque).

Pourboire

Quand un script est idempotent, vous pouvez l’exécuter plusieurs fois sans causer de problèmes. Vous pouvez déployer sur plusieurs bases de données sans avoir à prédéterminer leur statut.

Cas d’utilisation courants

  • Gestion des données statiques et de référence : insérez, mettez à jour ou supprimez des lignes des tables de recherche, de configuration ou de référence après le déploiement du schéma.
  • Nettoyage des données : supprimez les données obsolètes ou temporaires avant ou après l’application des modifications de schéma.
  • Configuration de l’environnement : appliquez des paramètres ou initialisez l’état qui diffère entre les environnements de développement, de test et de production.
  • Initialisation du pipeline basée sur les métadonnées : préparer l’état de l’entrepôt de données nécessaire aux étapes suivantes du pipeline.
  • Sécurité SQL : les données de table d’entrepôt et les fonctionnalités de sécurité SQL telles que les rôles, les utilisateurs et GRANT/DENY les autorisations ne sont pas incluses dans le projet de base de données SQL. Utilisez un script post-déploiement pour recréer ces objets après le déploiement, notamment les différences entre les environnements de test et de production. Pour obtenir des exemples, consultez Exemple de script post-déploiement pour la sécurité SQL.

Structure et syntaxe des fichiers projet SQL

Un projet SQL d’entrepôt fait référence aux scripts de pré-déploiement et post-déploiement dans le fichier projet (.sqlproj) en utilisant les types d’éléments PreDeploy et PostDeploy . Chaque entrée pointe vers un seul fichier de requête partagé dans le projet.

L’exemple suivant désigne pre-deployment.sql le script de prédéploiement et post-deployment.sql le script post-déploiement :

<ItemGroup>
  <PreDeploy Include="pre-deployment.sql" />
  <PostDeploy Include="post-deployment.sql" />
</ItemGroup>

Important

Fabric Data Warehouse ne prend en charge qu’un seul fichier pour le script de prédéploiement et un seul fichier pour le script de post-déploiement. La composition d’un script à partir de plusieurs fichiers ( par exemple, à l’aide de la commande SQLCMD :r pour référencer d’autres fichiers) n’est pas prise en charge. Si le .sqlproj fichier contient plusieurs entrées de prédéploiement ou de post-déploiement, la mise à jour Git échoue.

Exemple de script post-déploiement pour la sécurité SQL

Étant donné que les fonctionnalités de sécurité SQL ne sont pas capturées dans le projet de base de données SQL, un script post-déploiement est un moyen courant de les recréer une fois qu’un entrepôt est déployé. Écrivez le script pour qu’il puisse s’exécuter sur chaque déploiement.

L’exemple suivant crée un rôle de base de données personnalisé nommé DataReaders et accorde SELECT des autorisations au dbo schéma.

-- post-deployment.sql
-- Recreate a role and grant permissions after deployment.
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = N'DataReaders')
BEGIN
    CREATE ROLE DataReaders;
END;
GO

GRANT SELECT ON SCHEMA::dbo TO DataReaders;
GO

Note

Fabric Data Warehouse ne prend pas en charge chaque instructionTransact-SQL disponible dans SQL Server. Vérifiez que les instructions de vos scripts sont prises en charge dans Fabric Data Warehouse.

Configurer des scripts de prédéploiement et de post-déploiement dans le portail Fabric

Dans le portail Fabric, désignez une requête partagée existante comme script de prédéploiement ou de post-déploiement. Vous pouvez le faire à partir de Explorateur d'objets ou à partir des paramètres de l'élément d'entrepôt.

Vous ne pouvez pas désigner une requête partagée comme script de prédéploiement et de post-déploiement en même temps.

À partir de Explorateur d'objets

  1. Dans l’éditeur de l’entrepôt, développez le dossier Requêtes dans Explorateur d'objets.
  2. Cliquez avec le bouton droit sur la requête partagée que vous souhaitez utiliser.
    • Si nécessaire, déplacez une requête de Mes requêtes vers une requête partagée.
  3. Sélectionnez Définir des scripts de déploiement. Cette action vous permet d’accéder au volet paramètres de l’élément.
  4. Dans les champs de script de pré-déploiement et de script post-déploiement , sélectionnez Choose script.
  5. Choisissez l’option Définir une requête comme script pré-/post-déploiement , puis sélectionnez une requête partagée pour chacun. Chaque menu déroulant liste toutes les requêtes partagées dans l’entrepôt.

À partir des paramètres de l’élément

  1. Ouvre les paramètres de l’entrepôt.
  2. Allez dans la section CI/CD .
  3. Dans les champs de script de pré-déploiement et de script post-déploiement , sélectionnez Choose script.
  4. Choisissez l’option Définir une requête comme script pré-/post-déploiement , puis sélectionnez une requête partagée pour chacun. Chaque menu déroulant liste toutes les requêtes partagées dans l’entrepôt.

Les sélections que vous effectuez sont stockées sous forme de métadonnées au niveau de l’entrepôt et restent synchronisées entre Explorateur d'objets et l’élément Paramètres.

Comportement des scripts de prédéploiement et de post-déploiement avec le déploiement

Avec l’intégration de Git

Lorsque vous connectez un espace de travail à un dépôt Git, les désignations de prédéploiement et de post-déploiement sont sérialisées dans le fichier .sqlproj de l’entrepôt au moment de la validation. Lorsque vous mettez à jour l’entrepôt à partir de Git, Fabric applique les modifications apportées à l’entrepôt en direct et exécute les scripts dans l’ordre :

  1. Le script de prédéploiement s’exécute avant l’application des modifications de schéma.
  2. Le plan de déploiement du schéma a été appliqué.
  3. Le script post-déploiement s’exécute une fois le schéma modifié.

Désignations en aller-retour via Git : le fait de configurer un script dans le portail et d’en faire le commit, ou de le créer dans le .sqlproj et de mettre à jour l’espace de travail, produisent un résultat cohérent. Les validations répétées et les mises à jour ne sont pas dupliquées ou perdent la configuration. Étant donné qu’un seul script de prédéploiement et un script post-déploiement sont autorisés, une configuration créée dans Git remplace toute désignation existante dans l’entrepôt lors de la mise à jour.

Avec des pipelines de déploiement

Les pipelines de déploiement utilisent les désignations pré-déploiement et post-déploiement lorsqu’ils promeuvent un entrepôt aux étapes de développement, de test et de production . Les scripts désignés s’exécutent de manière déterministe dans chaque environnement cible. Vous pouvez donc les utiliser pour appliquer la configuration de l’environnement ou pour réappliquer la sécurité SQL à mesure que le contenu passe d’une étape à l’autre.

Dans les espaces de travail sans contrôle de code source

La définition d’élément de l’entrepôt inclut les désignations de prédéploiement et de post-déploiement, même lorsque l’espace de travail n’est pas connecté au contrôle de code source. L’exportation de l’entrepôt inclut la configuration et son importation restaure la configuration intacte.

Créer des scripts de prédéploiement et de post-déploiement dans un projet de base de données SQL

Au lieu du portail Fabric, vous pouvez créer des scripts de prédéploiement et de post-déploiement directement dans le projet de base de données SQL de l'entrepôt à l'aide de l'extension Projets SQL Database dans Visual Studio Code ou l'expérience intégrée des projets SQL dans SQL Server Management Studio. La configuration s’affiche dans le portail Fabric ( dans les paramètres de Explorateur d'objets et d’élément ) après la prochaine mise à jour Git.

Visual Studio Code

  1. Installez l’extension Projets SQL Database dans Visual Studio Code.
  2. Ouvrez le projet de base de données SQL pour votre entrepôt. Si votre espace de travail est connecté à Git, clonez le dépôt, puis ouvrez le dossier du projet d’entrepôt.
  3. Dans la vue Projets de base de données , cliquez avec le bouton droit sur le nœud du projet, puis sélectionnez Ajouter un script de prédéploiement ou Ajouter un script post-déploiement.
  4. Fournissez un nom de script sans l’extension de fichier. Le fichier de script est ajouté au projet et ouvert dans l’éditeur.
  5. Ajoutez votre Transact-SQL au script et enregistrez le fichier. Assurez-vous que le fichier est enregistré dans le .sharedqueries dossier pour la prochaine mise à jour Git.
  6. Validez et envoyez (push) les modifications à votre dépôt Git, puis mettez à jour l’espace de travail à partir du contrôle de code source pour appliquer la configuration.

SQL Server Management Studio

  1. Utilisez SQL Server Management Studio 22 ou version ultérieure, qui inclut l’expérience projets SQL Database.
  2. Ouvrez le projet de base de données SQL pour votre entrepôt.
  3. Dans Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet, puis sélectionnez Ajouter>un script. Sélectionnez Script de prédéploiement ou script post-déploiement.
  4. Le fichier de script est ajouté au projet et ouvert dans l’éditeur de requête.
  5. Ajoutez votre Transact-SQL au script et enregistrez le fichier. Assurez-vous d’enregistrer le fichier dans le .sharedqueries dossier pour la prochaine mise à jour Git.
  6. Validez et envoyez (push) les modifications à votre dépôt Git, puis mettez à jour l’espace de travail à partir du contrôle de code source pour appliquer la configuration.

Modifier directement le fichier projet

Dans n’importe quel outil, vous pouvez spécifier un script en modifiant le fichier .sqlproj et en ajoutant un seul élément PreDeploy ou PostDeploy à un ItemGroup :

<ItemGroup>
  <PreDeploy Include="./sharedqueries/pre-deployment.sql" />
  <PostDeploy Include="./sharedqueries/post-deployment.sql" />
</ItemGroup>

Migrer à partir de projets SQL existants

Si vous migrez un .sqlproj à partir de SQL Server Data Tools (SSDT) ou de Visual Studio qui contient déjà des entrées <PreDeploy> et <PostDeploy>, le processus d’importation reconnaît ces entrées et les associe à la configuration Fabric de prédéploiement et de postdéploiement. Étant donné que Fabric prend en charge un seul script de prédéploiement et un script post-déploiement, vérifiez que le projet contient au maximum une entrée de chaque type avant l’importation.

Considérations et limites

  • Un entrepôt ne prend en charge qu’un seul script de prédéploiement et un seul script post-déploiement. Il ne prend pas en charge plusieurs fichiers par script.
  • Vous ne pouvez pas désigner la même requête partagée que le script de prédéploiement et de post-déploiement.
  • Si vous supprimez une requête partagée désignée en tant que script de prédéploiement ou de post-déploiement, la désignation correspondante est automatiquement effacée.
  • Si vous modifiez une requête partagée désignée comme un script de prédéploiement ou de post-déploiement dans une requête utilisateur, la désignation correspondante est automatiquement effacée.
  • Les scripts de prédéploiement et de post-déploiement s’exécutent sur chaque déploiement d’entrepôt. Les scripts Transact-SQL doivent être idempotents, de sorte que les exécutions répétées ne échouent pas ou ne créent pas d'objets en double.
  • Les scripts de prédéploiement et de post-déploiement ne sont pas validés par rapport au modèle de base de données au moment de la génération. Les erreurs dans les scripts apparaissent lors du déploiement, et l’échec d’un script interrompt le déploiement.
  • Vous pouvez uniquement utiliser le Transact-SQL qui est pris en charge dans Fabric Data Warehouse.
  • L’identité qui exécute le déploiement doit avoir les autorisations nécessaires pour exécuter le contenu du script.