Usare progetti SQL in stile SDK con l'estensione progetti di database SQL (anteprima)
Questo articolo presenta Microsoft.Build.Sql per progetti SQL di tipo SDK nell'estensione progetti database SQL in Azure Data Studio o Visual Studio Code. I progetti SQL in stile SDK sono particolarmente vantaggiosi per le applicazioni fornite tramite pipeline o create in ambienti multipiattaforma predefiniti. L'annuncio iniziale è disponibile in TechCommunity.
Nota
Microsoft.Build.Sql è attualmente in anteprima.
Creare un progetto di database in stile SDK
È possibile creare un progetto di database in stile SDK da un progetto vuoto o da un database esistente.
Progetto vuoto
Nella visualizzazione Progetti di database selezionare il pulsante Nuovo progetto e immettere un nome di progetto nell'input di testo visualizzato. Nella finestra di dialogo Seleziona cartella visualizzata, scegliere una directory in cui inserire la cartella del progetto, il file .sqlproj
e altri contenuti.
Per impostazione predefinita, viene spuntata la selezione Progetto in stile SDK (anteprima). Al termine della finestra di dialogo, il progetto vuoto viene aperto e visibile nella visualizzazione Progetti di database per la modifica.
Da un database esistente
Nella visualizzazione Progetto selezionare il pulsante Crea progetto dal database e connettersi a SQL Server. Dopo che la connessione è stata stabilita, selezionare un database dall'elenco dei database disponibili e impostare il nome del progetto. Selezionare una struttura di destinazione dell'estrazione.
Per impostazione predefinita, viene spuntata la selezione Progetto in stile SDK (anteprima). Al termine del dialogo verrà aperto il nuovo progetto, che conterrà gli script SQL per i contenuti del database selezionato.
Compilare e pubblicare
Dalle interfacce di Azure Data Studio e Visual Studio Code, la compilazione e la pubblicazione di un progetto SQL in stile SDK viene completata nello stesso modo del formato di progetto SQL precedente. Per altre informazioni su questo processo, vedere Compilare e pubblicare un progetto.
Per creare un progetto SQL in stile SDK dalla riga di comando in Windows, macOS o Linux, usare il comando seguente:
dotnet build
Il .dacpac
file risultante dalla compilazione di un progetto SQL in stile SDK è compatibile con gli strumenti associati al framework dell'applicazione livello dati (.dacpac
, .bacpac
), inclusi SqlPackage e GitHub sql-action.
Funzionalità del progetto
Nei progetti SQL sono disponibili diverse funzionalità che possono essere specificate nel .sqlproj
file che influiscono sul modello di database in fase di compilazione o distribuzione del progetto. Le sezioni seguenti descrivono alcune di queste funzionalità disponibili per i progetti Microsoft.Build.Sql.
Piattaforma di destinazione
La proprietà della piattaforma di destinazione è contenuta nel DSP
tag nel .sqlproj
file sotto l'elemento <PropertyGroup>
. La piattaforma di destinazione viene usata durante la compilazione del progetto per convalidare il supporto per le funzionalità incluse nel progetto e viene aggiunta al .dacpac
file come proprietà. Per impostazione predefinita, durante la distribuzione, la piattaforma di destinazione viene verificata sul database di destinazione per garantire la compatibilità. Se la piattaforma di destinazione non è supportata dal database di destinazione, la distribuzione ha esito negativo a meno che non venga specificata un'opzione di pubblicazione di override.
<Project DefaultTargets="Build">
<Sdk Name="Microsoft.Build.Sql" Version="0.1.12-preview" />
<PropertyGroup>
<Name>AdventureWorks</Name>
<DSP>Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider</DSP>
</PropertyGroup>
Le impostazioni valide per la piattaforma di destinazione sono:
Microsoft.Data.Tools.Schema.Sql.Sql120DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.Sql130DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.Sql140DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.Sql150DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.SqlDwDatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.SqlServerlessDatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.SqlDwUnifiedDatabaseSchemaProvider
Riferimenti al database
La convalida del modello di database in fase di compilazione può essere estesa oltre il contenuto del progetto SQL tramite riferimenti al database. I riferimenti al .sqlproj
database specificati nel file possono fare riferimento a un altro progetto SQL o a un .dacpac
file, che rappresenta un altro database o più componenti dello stesso database.
Per i riferimenti al database che rappresentano un altro database sono disponibili gli attributi seguenti:
- DatabaseSqlCmdVariable: il valore è il nome della variabile usata per fare riferimento al database
- Impostazione di riferimento:
<DatabaseSqlCmdVariable>SomeOtherDatabase</DatabaseSqlCmdVariable>
- Esempio di utilizzo:
SELECT * FROM [$(SomeOtherDatabase)].dbo.Table1
- Impostazione di riferimento:
- ServerSqlCmdVariable: il valore è il nome della variabile usata per fare riferimento al server in cui risiede il database. usato con DatabaseSqlCmdVariable, quando il database si trova in un altro server.
- Impostazione di riferimento:
<ServerSqlCmdVariable>SomeOtherServer</ServerSqlCmdVariable>
- Esempio di utilizzo:
SELECT * FROM [$(SomeOtherServer)].[$(SomeOtherDatabase)].dbo.Table1
- Impostazione di riferimento:
- DatabaseVariableLiteralValue: il valore è il nome letterale del database usato nel progetto SQL, simile a
DatabaseSqlCmdVariable
ma il riferimento ad altro database è un valore letterale- Impostazione di riferimento:
<DatabaseVariableLiteralValue>SomeOtherDatabase</DatabaseVariableLiteralValue>
- Esempio di utilizzo:
SELECT * FROM [SomeOtherDatabase].dbo.Table1
- Impostazione di riferimento:
In un file di progetto SQL, un riferimento al database viene specificato come ArtifactReference
elemento con l'attributo Include
impostato sul percorso del .dacpac
file.
<ItemGroup>
<ArtifactReference Include="SampleA.dacpac">
<DatabaseSqlCmdVariable>DatabaseA</DatabaseSqlCmdVariable>
</ArtifactReference>
</ItemGroup>
</Project>
Riferimenti ai pacchetti
I riferimenti ai pacchetti vengono usati per fare riferimento a pacchetti NuGet che contengono un .dacpac
file e vengono usati per estendere il modello di database in fase di compilazione in modo analogo a un riferimento al database.
L'esempio seguente da un file di progetto SQL fa riferimento al Microsoft.SqlServer.Dacpacs
pacchetto per il master
database.
<ItemGroup>
<PackageReference Include="Microsoft.SqlServer.Dacpacs" Version="160.0.0" />
</ItemGroup>
</Project>
Oltre agli attributi disponibili per i riferimenti al database, è possibile specificare l'attributo seguente DacpacName
per selezionare un .dacpac
oggetto da un pacchetto che contiene più .dacpac
file.
<ItemGroup>
<PackageReference Include="Microsoft.SqlServer.Dacpacs" Version="160.0.0">
<DacpacName>msdb</DacpacName>
</PackageReference>
</ItemGroup>
</Project>
Variabili SqlCmd
Le variabili SqlCmd possono essere definite nel .sqlproj
file e vengono usate per sostituire i token negli oggetti e negli script SQL durante .dacpac
la distribuzione. L'esempio seguente di un file di progetto SQL definisce una variabile denominata EnvironmentName
disponibile per l'uso negli oggetti e negli script del progetto.
<ItemGroup>
<SqlCmdVariable Include="EnvironmentName">
<DefaultValue>testing</DefaultValue>
<Value>$(SqlCmdVar__1)</Value>
</SqlCmdVariable>
</ItemGroup>
</Project>
IF '$(EnvironmentName)' = 'testing'
BEGIN
-- do something
END
Quando viene distribuito un progetto SQL compilato (.dacpac
), il valore della variabile viene sostituito con il valore specificato nel comando di distribuzione. Ad esempio, il comando seguente distribuisce AdventureWorks.dacpac
e imposta il valore della EnvironmentName
variabile su production
.
SqlPackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /v:EnvironmentName=production
Script pre/post-distribuzione
Gli script pre-distribuzione e post-distribuzione sono script SQL inclusi nel progetto da eseguire durante la distribuzione. Gli script di pre-distribuzione vengono inclusi in .dacpac
ma non vengono compilati o convalidati con il modello a oggetti del database. Uno script di pre-distribuzione viene eseguito prima dell'applicazione del modello di database e dopo l'applicazione del modello di database viene eseguito uno script di post-distribuzione. L'esempio seguente da un file di progetto SQL aggiunge il file populate-app-settings.sql
come script di post-distribuzione.
<ItemGroup>
<PostDeploy Include="populate-app-settings.sql" />
</ItemGroup>
</Project>
Passaggi successivi
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per