Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Si applica a:SQL Server
Database SQL di
AzureIstanza gestita di SQL di
AzureDatabase 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.
Note
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.
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.
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>
L'esempio seguente include un riferimento al pacchetto come riferimento al Contoso.AdventureWorks database per un database diverso (AdventureWorks) nello stesso server in cui gli oggetti nel pacchetto diventano parte del modello di database nel progetto SQL:
...
<ItemGroup>
<PackageReference Include="Contoso.AdventureWorks" Version="1.1.0">
<DatabaseSqlCmdVariable>AdventureDB</DatabaseSqlCmdVariable>
<DacpacName>AdventureWorks</DacpacName>
</PackageReference>
</ItemGroup>
<ItemGroup>
<SqlCmdVariable Include="AdventureDB">
<DefaultValue>AdventureWorks</DefaultValue>
<Value>$(SqlCmdVar__1)</Value>
</SqlCmdVariable>
</ItemGroup>
</Project>
In questo esempio il file AdventureWorks .dacpac viene pubblicato come versione Contoso.AdventureWorks del pacchetto 1.1.0 in un feed NuGet. L'elemento <DatabaseSqlCmdVariable> specifica il nome del database nello stesso server in cui si trovano gli oggetti nel pacchetto e verrà utilizzato per indicare questo riferimento nella denominazione in tre parti. La variabileAdventureDB SQLCMD viene usata per impostare il nome del database in fase di distribuzione e viene usata nel progetto in modo analogo a questa query di esempio:
SELECT * FROM [$(AdventureDB)].dbo.Customers;
L'elemento <DacpacName> specifica il nome del file di riferimento per il pacchetto, senza l'estensione o il percorso del file. L'elemento <DacpacName> è facoltativo ed è obbligatorio solo quando il nome del .dacpac file è diverso dal nome del pacchetto.
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 minore riflettono correzioni di bug e cambiamenti allo schema all'interno di una versione di SQL Server.
I pacchetti di database di sistema disponibili sono:
-
SQL Server
masterdatabase di sistema -
SQL Server
msdbdatabase di sistema -
Azure SQL Database
masterdatabase di sistema - Database SQL negli oggetti di sistema di Fabric
-
Azure Synapse Analytics
masterdatabase di sistema -
Azure Synapse Analytics serverless pools
masterdatabase di sistema
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.
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 ulteriori informazioni, consultare Hosting con feed di pacchetti privati.
Quando si fa riferimento a un pacchetto in cui è PackageId diverso dal nome del .dacpac file, l'elemento <DacpacName> è necessario nel riferimento al pacchetto quando si utilizza il pacchetto.
Riferimenti al pacchetto delle regole di analisi del codice esteso
I riferimenti ai pacchetti possono essere usati anche per fare riferimento a più regole di analisi del codice sviluppate come parte dell'estendibilità dell'analisi del codice. Il riferimento al pacchetto per un pacchetto di regole di analisi del codice è simile al riferimento al pacchetto per un pacchetto di oggetti di database. L'esempio seguente mostra un riferimento a un pacchetto di regole di analisi del codice personalizzato:
<ItemGroup>
<PackageReference Include="Your.CustomCode.AnalysisRules" Version="1.2.3" />
</ItemGroup>
Il pacchetto a cui si fa riferimento deve essere disponibile in un feed NuGet, ad esempio NuGet.org, Azure Artifacts o un'origine locale. Quando viene fatto riferimento a un pacchetto contenente regole di analisi del codice, le regole vengono automaticamente incluse nel progetto SQL e vengono valutate quando la proprietà RunSqlCodeAnalysis del progetto è impostata su true. Le regole possono essere disabilitate o elevate per restituire un errore singolarmente nelle proprietà del progetto.