Ajouter des fichiers existants à un projet SQL

S'applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instancebase de données SQL dans Microsoft Fabric

Par concept, une fois qu’un projet SQL est créé, des objets peuvent lui être ajoutés un à la fois ou en bloc. L’ajout d’objets un à la fois est simple, tandis que l’ajout d’objets en bloc peut être effectué à partir du contenu d’un fichier .dacpac ou d’un ou plusieurs scripts SQL. Cet article explique comment ajouter le contenu de scripts dacpac ou SQL à un projet SQL, et les compromis entre les sources.

Importer à partir d'un fichier .dacpac

Un fichier .dacpac est un modèle de base de données compilé, et nécessite des outils spécifiques pour lire et appliquer le fichier. Un .dacpac fichier peut être généré en tant qu’artefact de build de projet SQL ou à partir d’une base de données existante, et vous pouvez être fourni avec un fichier sans accès à la source. Outre les nombreux outils qui peuvent appliquer un .dacpac à une base de données, SQL Server Data Tools (SSDT) dans Visual Studio pouvez importer le contenu d’un fichier .dacpac directement dans un projet. La possibilité d'importer un schéma depuis une base de données ou un fichier .dacpac n'est disponible que si aucun objet de schéma n'est encore défini dans le projet.

Screenshot du menu d’importation sur un projet SQL dans Visual Studio SSDT.

Lors de l’importation, les définitions d’objet sont écrites via un script dans les fichiers de projet à l’aide des valeurs organisationnelles par défaut de SSDT pour les nouveaux objets : nouveaux fichiers pour les objets de niveau supérieur, enfants hiérarchiques définis dans le même fichier que le parent, contraintes de table/colonne définies en ligne quand cela est possible. Pour disposer d'un meilleur contrôle et d'une visibilité ciblée pour chaque objet, utilisez Comparaison de schémas au lieu d'Importer. Si la source d'importation contient des scripts de prédéploiement et de post-déploiement, des fichiers RefactorLogs ou des définitions de variable SQLCMD, ils sont importés dans le projet. Si le projet contient déjà l’un de ces artefacts, les fichiers importés sont ajoutés à un dossier Ignoré lors de l’importation dans le projet.

Si Visual Studio et SQL Server Data Tools n'est pas disponible, vous pouvez :

  • Utilisez l’extension Comparaison de schémas dans Visual Studio Code pour comparer le contenu d’un fichier .dacpac à un projet, puis appliquez de manière sélective les modifications au projet.
  • Utiliser l’utilitaire de ligne de commande SqlPackage pour importer le contenu d’un fichier .dacpac dans une base de données, puis créer un projet à partir de la base de données.

Importer à partir de scripts SQL

Les scripts T-SQL peuvent être importés dans un projet SQL de deux façons : en ajoutant les fichiers de script au répertoire du projet ou en traitant le contenu des scripts dans Visual Studio. La méthode que vous choisissez dépend du type de projet ainsi que du niveau de contrôle souhaité sur le processus d’importation. Dans les deux cas, la syntaxe des fichiers de script doit être valide.

Ajouter des fichiers à un projet

Avec les projets SQL de style SDK, vous pouvez ajouter des scripts SQL existants à un projet en les plaçant dans le répertoire du projet, car Microsoft.Build.Sql inclut automatiquement tous les fichiers *.sql du projet. Si vous utilisez un projet de style non SDK, vous devez importer des scripts SQL existants dans le projet en utilisant le traitement des scripts dans Visual Studio. Les fichiers *.sql inclus automatiquement dans le projet sont inclus dans la build du modèle de base de données en tant qu’objets SQL.

L’ajout au dossier du projet d’un fichier contenant une définition d’objet dupliquée pour un objet déjà présent dans le projet cause l’échec de la génération du projet. Vous devez résoudre manuellement le conflit en supprimant l’objet dupliqué ou en renommant l’un des objets.

Pour ajouter un fichier à un projet en tant que script de pré/post-déploiement, en plus d’ajouter le fichier au répertoire du projet, vous devez aussi inclure le fichier dans le fichier projet. Par exemple, pour ajouter un fichier nommé Pre-DeploymentScript.sql comme script de prédéploiement, ajoutez ce qui suit au fichier projet :

<ItemGroup>
  <PreDeploy Include="Pre-DeploymentScript.sql" />
</ItemGroup>

Vous trouverez plus d’informations sur les scripts de pré/post-déploiement dans la documentation des projets SQL.

Traitement du contenu des fichiers

SQL Server Data Tools (SSDT) dans Visual Studio a également la possibilité de traiter le contenu des scripts SQL tout en les ajoutant à un projet de style original. Pendant ce traitement, si un script contient un objet déjà défini dans le projet, la définition de l’objet est mise à jour pour correspondre à celle du script. Si le script contient un objet qui n’est pas déjà défini dans le projet, un nouveau fichier est créé pour l’objet.

Il existe des problèmes connus dans lesquels le traitement du script peut entraîner des instructions de contrainte et de clé de chiffrement en double. Si vous rencontrez de tels problèmes, utilisez la fenêtre de sortie du build pour identifier la source des doublons et les supprimer manuellement du projet.

Le processus d'importation à partir d'un script n’incorpore pas les scripts de prédéploiement et de post-déploiement, les variables SQLCMD ni les fichiers RefactorLog. Ces éléments, ainsi que toutes les autres constructions non prises en charge qui sont détectées lors de l’importation, sont placés dans un fichier ScriptsIgnoredOnImport.sql au sein d’un dossier Scripts dans votre projet.

Fichiers XSD

Les projets SQL prennent également en charge l’importation de fichiers XSD pour générer des collections de schémas XML dans la base de données. Pour plus d’informations sur la configuration des fichiers XSD dans un projet SQL, consultez les collections de schémas XML dans les projets SQL.