Condividi tramite


Panoramica dei riferimenti ai pacchetti di progetti SQL

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure database SQL in Microsoft Fabric

I riferimenti ai pacchetti nei progetti SQL consentono di fare riferimento a oggetti di database da altri progetti o pacchetti NuGet. Gli oggetti di database aggiunti a un progetto tramite riferimenti al pacchetto possono far parte dello stesso database, di un database diverso nello stesso server o di un database diverso in un server diverso.

Nota

I riferimenti ai pacchetti sono il metodo consigliato per fare riferimento agli oggetti di database in un nuovo sviluppo. Il riferimento ai pacchetti NuGet è supportato solo nei progetti SQL in stile SDK (anteprima).

Riferimenti al pacchetto di oggetti del database

I riferimenti ai pacchetti sono uno dei diversi metodi per l'aggiunta di oggetti di database a un progetto SQL come riferimento al database. I riferimenti ai pacchetti possono contenere oggetti per lo stesso database, un database diverso nello stesso server o un database diverso in un server diverso. I riferimenti ai pacchetti possono essere usati per suddividere un database in progetti più piccoli e gestibili, che consentono di ridurre il tempo necessario per compilare un progetto durante lo sviluppo locale iterativo.

Screenshot dell'esempio di un progetto SQL che fa riferimento a due pacchetti e a un progetto per i riferimenti al database.

Esempio e sintassi del file di progetto SQL

I riferimenti ai pacchetti vengono aggiunti a un progetto SQL tramite voci nel file .sqlproj, simili ai progetti C#. Quando un riferimento al pacchetto si riferisce a un database diverso nello stesso server, un elemento <DatabaseSqlCmdVariable> viene incluso nel riferimento al pacchetto. Quando un riferimento al pacchetto si riferisce a un database diverso in un server diverso, viene incluso anche un elemento <ServerSqlCmdVariable> nel riferimento al pacchetto. I riferimenti al pacchetto allo stesso database non includono gli elementi <ServerSqlCmdVariable> o <DatabaseSqlCmdVariable>.

L'esempio seguente include un riferimento al pacchetto Contoso.AdventureWorks.SalesLT come riferimento al database per lo stesso database in cui gli oggetti nel pacchetto diventano parte del modello di database nel progetto SQL:

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

Database di sistema

I database di sistema SQL (master, msdb) vengono pubblicati in NuGet.org come pacchetti di riferimento del database. Questi pacchetti contengono lo schema per i database di sistema e possono essere usati come riferimenti ai pacchetti nei progetti SQL. Le versioni dei pacchetti di database di sistema vengono allineate alla versione di SQL Server a cui sono associate. Ad esempio, il pacchetto di database di sistema master per SQL Server 2022 è Microsoft.SqlServer.Dacpacs.Master versione 160.2.1 e può essere aggiunto a un progetto SQL come riferimento al pacchetto:

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

Le modifiche della versione secondaria riflettono correzioni di bug e modifiche secondarie allo schema all'interno di una versione di SQL Server.

I pacchetti di database di sistema disponibili sono:

Pacchetto dacpac Pacchetti NuGet

Un pacchetto di riferimento al database è un pacchetto NuGet che contiene un file .dacpac. Il pacchetto NuGet può essere pubblicato in un feed NuGet, ad esempio Azure Artifacts, per l'uso nei progetti SQL. La creazione di questo pacchetto segue lo stesso processo di creazione di un pacchetto NuGet per altri tipi di progetti. Per altre informazioni, vedere Creazione di un pacchetto con interfaccia della riga di comando (CLI) dotnet.

Screenshot del riepilogo delle informazioni di riferimento sul pacchetto per il processo dei progetti SQL.

Per creare il pacchetto di un file .sqlproj come pacchetto NuGet, usare il comando dotnet pack dalla riga di comando. Per impostazione predefinita, il comando dotnet pack crea un pacchetto NuGet dal file .sqlproj nella cartella bin/Debug.

I metadati del pacchetto possono essere specificati dalle proprietà all'interno dell'elemento <PropertyGroup> nel file .sqlproj. Ad esempio, le proprietà seguenti specificano l'ID pacchetto, la versione, la descrizione, gli autori e la società:

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

Il file .nupkg creato dal comando dotnet pack può essere pubblicato in un feed NuGet da usare nei progetti SQL. Questi oggetti di database possono essere visualizzati da chiunque abbia accesso al pacchetto, pertanto è necessario prendere in considerazione la selezione di un percorso di feed pubblico o privato. Per altre informazioni, vedere Hosting con feed di pacchetti privati.