Partager via


Vue d'ensemble des références de package de projets SQL

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance

Les références de packages dans les projets SQL vous permettent de référencer des objets de base de données à partir d'autres projets ou de packages NuGet. Les objets de base de données ajoutés à un projet via des références de packages peuvent faire partie de la même base de données, d'une base de données différente sur le même serveur ou d'une base de données différente sur un serveur différent.

Remarque

Les références de package sont la méthode recommandée pour référencer les objets de la base de données dans les nouveaux développements. Le référencement des packages NuGet n'est supporté que dans les projets SQL de style SDK (aperçu).

Références de packages d'objets de base de données

Les références de packages sont l'une des méthodes permettant d'ajouter des objets de base de données à un projet SQL en tant que référence de base de données. Les références de packages peuvent contenir des objets pour la même base de données, d'une base de données différente sur le même serveur ou d'une base de données différente sur un serveur différent. Les références de packages peuvent être utilisées pour diviser une base de données en projets plus petits et plus faciles à gérer, ce qui peut contribuer à réduire le temps nécessaire à la génération d'un projet au cours du développement local itératif.

Capture d'écran de l'exemple d'un projet SQL référençant deux packages et un projet pour les références à la base de données.

Exemple et syntaxe de fichier projet SQL

Les références de packages sont ajoutées à un projet SQL via des entrées dans le fichier .sqlproj, de la même manière que pour les projets C#. Lorsqu'une référence de package renvoie à une autre base de données sur le même serveur, un élément <DatabaseSqlCmdVariable> est inclus dans la référence du package. Lorsqu'une référence de package renvoie à une autre base de données sur un autre serveur, un élément <ServerSqlCmdVariable> est également inclus dans la référence du package. Les références de packages à la même base de données n'incluent pas d'éléments <ServerSqlCmdVariable> ou <DatabaseSqlCmdVariable>.

L'exemple suivant inclut une référence de package au package Contoso.AdventureWorks.SalesLT en tant que référence de base de données pour la même base de données où les objets du package font partie du modèle de base de données dans le projet SQL :

...
  <ItemGroup>
    <PackageReference Include="Contoso.AdventureWorks.SalesLT" Version="1.1.0" />
  </ItemGroup>
</Project>

Bases de données système

Les bases de données système SQL (master, msdb) sont publiées sur NuGet.org en tant que packages de référence de base de données. Ces packages contiennent le schéma des bases de données du système et peuvent être utilisés comme références de packages dans les projets SQL. Les packages de base de données système sont versionnés pour s'aligner sur la version de SQL Server à laquelle ils sont associés. Par exemple, le package de base de données système master pour SQL Server 2022 est Microsoft.SqlServer.Dacpacs.Master version 160.2.1 et peut être ajouté à un projet SQL en tant que référence de package :

...
  <ItemGroup>
    <PackageReference Include="Microsoft.SqlServer.Dacpacs.Master" Version="160.2.1" />
  </ItemGroup>
</Project>

Les modifications de version mineures reflètent les corrections de bogues et les modifications mineures apportées au schéma d'une version de SQL Server.

Les packages de base de données système disponibles sont les suivants :

Package dacpac Packages NuGet

Un package de référence de base de données est un package NuGet qui contient un fichier .dacpac. Le package NuGet peut être publié dans un flux NuGet, tel que Azure Artifacts, pour être utilisé dans des projets SQL. La création de ce package suit le même processus que la création d'un package NuGet pour d'autres types de projets. Pour plus d'informations, consultez la section Création d'un package avec l'interface CLI dotnet.

Capture d'écran du résumé de la référence du package pour le processus des projets SQL.

Pour packager un fichier .sqlproj en tant que package NuGet, utilisez la commande dotnet pack à partir de la ligne de commande. Par défaut, la commande dotnet pack crée un package NuGet à partir du fichier .sqlproj dans le dossier bin/Debug.

Les métadonnées du package peuvent être spécifiées par des propriétés à l'intérieur de l'élément <PropertyGroup> dans le fichier .sqlproj. Par exemple, les propriétés suivantes spécifient l'ID du package, sa version, sa description, ses auteurs et sa société :

<PackageId>Contoso.AdventureWorks.SalesLT</PackageId>
<Version>1.0.0</Version>
<Description>AdventureWorks database SalesLT objects</Description>
<Authors>DevTeam</Authors>
<Company>Contoso Outdoors</Company>

Le fichier .nupkg créé par la commande dotnet pack peut être publié dans un flux NuGet pour être utilisé dans des projets SQL. Ces objets de base de données peuvent être consultés par toute personne ayant accès au package. Vous devez donc réfléchir à la sélection d'un emplacement public ou privé pour les flux. Pour plus d'informations, consultez la section Hébergement avec des flux de packages privés.