Convertire un progetto SQL originale in un progetto in stile SDK
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Database SQL in Microsoft Fabric
La creazione di un nuovo progetto SQL in stile SDK è un'attività rapida. Tuttavia, se sono presenti progetti SQL esistenti, è possibile convertirli in progetti SQL in stile SDK per sfruttare le nuove funzionalità.
Dopo aver convertito il progetto, è possibile usare le nuove funzionalità del progetto in stile SDK, ad esempio:
- supporto alla compilazione multipiattaforma
- formato di file di progetto semplificato
- riferimenti ai pacchetti
Per completare attentamente la conversione, si eseguirà quanto illustrato di seguito:
- Creare un backup del file di progetto originale.
- Compilare un file
.dacpac
dal progetto originale per il confronto. - Modificare il file di progetto in un progetto in stile SDK.
- Compilare un file
.dacpac
dal progetto modificato per il confronto. - Verificare che i file
.dacpac
siano uguali.
I progetti in stile SDK non sono supportati in SQL Server Data Tools (SSDT) in Visual Studio. Dopo la conversione, è necessario usare uno dei seguenti elementi per compilare o modificare il progetto:
- riga di comando
- l'estensione progetti di database SQL in Visual Studio Code
- L'estensione dei progetti di database SQL in Azure Data Studio
- SQL Server Data Tools, modalità SDK (anteprima) in Visual Studio 2022
Prerequisiti
Passaggio 1: creare un backup del file di progetto originale
Prima di convertire il progetto, creare un backup del file di progetto originale. In questo modo, è possibile ripristinare il progetto originale, se necessario.
In Esplora file creare una copia del file .sqlproj
per il progetto da convertire con .original
aggiunto alla fine dell'estensione del file. Ad esempio, MyProject.sqlproj
diventa MyProject.sqlproj.original
.
Passaggio 2: compilare un file .dacpac
dal progetto originale per il confronto
Aprire il progetto in Visual Studio 2022. Il file .sqlproj
è ancora nel formato originale, quindi lo si apre nel SQL Server Data Tools originale.
Compilare il progetto in Visual Studio facendo clic con il pulsante destro del mouse sul nodo database Esplora soluzioni e selezionando Compila.
Per compilare un file .dacpac
dal progetto originale, è necessario usare l'originale SQL Server Data Tools (SSDT) in Visual Studio. Aprire il file di progetto in Visual Studio 2022 con SQL Server Data Tools originale installato.
Compilare il progetto in Visual Studio facendo clic con il pulsante destro del mouse sul nodo database Esplora soluzioni e selezionando Compila.
Aprire la cartella del progetto in VS Code o in Azure Data Studio. Nella visualizzazione Progetti di database di VS Code o Azure Data Studio fare clic con il pulsante destro del mouse sul nodo del progetto e scegliere Compila.
I progetti di database SQL possono essere compilati dalla riga di comando usando il comando dotnet build
.
dotnet build
# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj
Il processo di compilazione crea un file .dacpac
nella cartella bin\Debug
del progetto per impostazione predefinita. Usando Esplora file, individuare l'oggetto .dacpac
creato dal processo di compilazione e copiarlo in una nuova cartella all'esterno della directory del progetto come original_project.dacpac
. Questo file .dacpac
viene usato per il confronto per convalidare la conversione in un secondo momento.
Passaggio 3: aggiornare il file di progetto in modo che sia un progetto in stile SDK
La modifica del file di progetto è un processo manuale, con prestazioni ottimali in un editor di testo. Aprire il file .sqlproj
in un editor di testo e apportare i seguenti cambiamenti:
Obbligatorio: aggiungere il riferimento SDK
All'interno dell'elemento del progetto aggiungere un elemento Sdk
per fare riferimento a Microsoft.Build.Sql e alla versione più recente di https://www.nuget.org/packages/Microsoft.build.sql in cui #.#.#
è incluso nel frammento di codice seguente.
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0">
<Sdk Name="Microsoft.Build.Sql" Version="#.#.#" />
...
Obbligatorio: rimuovere gli import di target di build non necessari
I progetti SQL originali fanno riferimento a diverse destinazioni di compilazione e proprietà nelle istruzioni Import. Ad eccezione degli articoli <Import/>
aggiunti in modo esplicito, ovvero una modifica univoca e intenzionale, rimuovere le righe che iniziano con <Import ...>
.
Esempi da rimuovere se presenti in .sqlproj
:
...
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Import Condition="..." Project="...\Microsoft.Data.Tools.Schema.SqlTasks.targets"/>
<Import Condition="'$(SQLDBExtensionsRefPath)' != ''" Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
<Import Condition="'$(SQLDBExtensionsRefPath)' == ''" Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
...
Obbligatorio: rimuovere la cartella Proprietà
I progetti SQL originali hanno una voce per una cartella Properties
che rappresenta l'accesso alle proprietà del progetto in Esplora soluzioni. Questo elemento deve essere rimosso dal file di progetto.
Esempio da rimuovere se presente in .sqlproj
:
<ItemGroup>
<Folder Include="Properties" />
</ItemGroup>
Obbligatorio: Rimuovere gli elementi di Build inclusi per impostazione predefinita
I progetti SQL originali elencano tutti i file .sql
che rappresentano gli oggetti di database in modo esplicito nel file di progetto come elementi <Build Include="..." />
. Nei progetti SQL in stile SDK, tutti i file .sql
nell'albero delle cartelle del progetto (**/*.sql
) sono inclusi per impostazione predefinita, quindi è necessario rimuovere gli elementi <Build Include="...." />
per tali file per evitare problemi di prestazioni di compilazione.
Righe che devono essere rimosse dal file di progetto, ad esempio:
<Build Include="SalesLT/Products.sql" />
<Build Include="SalesLT/SalesLT.sql" />
<Build Include="SalesLT/Categories.sql" />
<Build Include="SalesLT/CategoriesProductCount.sql" />
Non è consigliabile rimuovere <PreDeploy Include="..." />
o <PostDeploy Include="..." />
elementi, perché questi nodi determinano comportamento specifico per tali file. Non è inoltre consigliabile rimuovere <Build Include="..." />
elementi per i file che non si trovano nell'albero delle cartelle del progetto SQL.
Facoltativo: rimuovere i riferimenti a SSDT
"Le originali SQL Server Data Tools (SSDT) richiedevano contenuto aggiuntivo nel file di progetto per rilevare l'installazione di Visual Studio." Queste righe non sono necessarie nei progetti SQL in stile SDK e possono essere rimosse:
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">11.0</VisualStudioVersion>
<!-- Default to the v11.0 targets path if the targets file for the current VS version is not found -->
<SSDTExists Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets')">True</SSDTExists>
<VisualStudioVersion Condition="'$(SSDTExists)' == ''">11.0</VisualStudioVersion>
</PropertyGroup>
Facoltativo: rimuovere le impostazioni di compilazione predefinite
I progetti SQL originali includono due blocchi di grandi dimensioni per le impostazioni di compilazione release e debug, mentre nei progetti SQL in stile SDK le impostazioni predefinite per queste opzioni sono note dall'SDK. Se non sono disponibili personalizzazioni per le impostazioni di compilazione, provare a rimuovere questi blocchi:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
Il riferimento alle proprietà del progetto elenca le proprietà disponibili e le relative impostazioni predefinite.
Passaggio 4: compilare un file .dacpac
dal progetto modificato per il confronto
Il progetto SQL non è più compatibile con Visual Studio 2022. Per compilare o modificare il progetto, è necessario usare una delle opzioni seguenti:
- riga di comando
- l'estensione progetti di database SQL in Visual Studio Code
- L'estensione dei progetti di database SQL in Azure Data Studio
- Gli Strumenti di Sviluppo Dati di SQL Server, stile SDK (anteprima) in Visual Studio 2022
Il file di progetto è ora in formato SDK, ma per aprirlo in Visual Studio 2022, è necessario che SQL Server Data Tools, in stile SDK (anteprima) sia installato. Aprire il progetto in Visual Studio 2022 con SQL Server Data Tools, in stile SDK (anteprima) installato.
Aprire la cartella del progetto in VS Code o in Azure Data Studio. Nella visualizzazione Progetti di database di VS Code o Azure Data Studio fare clic con il pulsante destro del mouse sul nodo del progetto e scegliere Compila.
I progetti di database SQL possono essere compilati dalla riga di comando usando il comando dotnet build
.
dotnet build
# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj
Il processo di compilazione crea un file .dacpac
nella cartella bin\Debug
del progetto per impostazione predefinita. Usando esplora file, individua .dacpac
, creato dal processo di compilazione, e copialo in una nuova cartella al di fuori della directory del progetto. Questo file .dacpac
viene usato per il confronto per convalidare la conversione in un secondo momento.
Passaggio 5: verificare che i file .dacpac
siano gli stessi
Per verificare che la conversione sia riuscita, confrontare i file .dacpac
creati dai progetti originali e modificati. Le funzionalità di confronto degli schemi nei progetti SQL consentono di visualizzare la differenza nei modelli di database tra i due file .dacpac
. In alternativa, è possibile usare l'utilità da riga di comando DacpacVerify per confrontare i due file .dacpac
, inclusi gli script di pre/post-distribuzione e le impostazioni del progetto.
DacpacVerify è disponibile per installazione come strumento dotnet. Per installare lo strumento, eseguire il comando seguente:
dotnet tool install --global Microsoft.DacpacVerify --prerelease
La sintassi per DacpacVerify consiste nello specificare il percorso file di due file .dacpac
come dacpacverify <source DACPAC path> <target DACPAC path>
. Per confrontare i due file .dacpac
, eseguire il comando seguente:
DacpacVerify original_project.dacpac modified_project.dacpac
È possibile usare lo strumento di confronto dello schema in Visual Studio o Azure Data Studio per confrontare gli oggetti nei file di .dacpac
.
Avviare Visual Studio senza un progetto caricato. Passare a Strumenti>Confronto tra nuovi schemi di SQL Server.> Selezionare il file originale .dacpac
come origine e il file modificato .dacpac
come destinazione. Per altre informazioni sull'uso di Confronto schemi in Visual Studio, vedere Uso di confronto schemi per confrontare definizioni di database diverse.
Il confronto dello schema grafico non è ancora disponibile nell'anteprima dei progetti SQL in stile SDK in Visual Studio. Usare Azure Data Studio per confrontare gli schemi.
Il confronto schemi non è disponibile in Visual Studio Code. Usare Azure Data Studio o Visual Studio per confrontare gli schemi.
In Azure Data Studio installare l'estensione SQL Server Schema Compare se non è già installata. Avviare un nuovo confronto schemi dal riquadro comandi aprendo il riquadro comandi con Ctrl/Cmd+Shift+P
e digitando Schema Compare
.
Selezionare il file originale .dacpac
come origine e il file modificato .dacpac
come destinazione.
Il confronto schemi grafico è disponibile in Visual Studio e Azure Data Studio.
Quando viene eseguito il confronto schemi, non devono essere visualizzati risultati. La mancanza di differenze indica che i progetti originali e modificati sono equivalenti, producendo lo stesso modello di database nel file .dacpac
.
Nota
Il confronto dei file .dacpac
tramite il confronto tra schemi non convalida gli script di pre/post-distribuzione, il refactorlog o altre impostazioni del progetto. Convalida solo il modello di database. L'uso dell'utilità da riga di comando DacpacVerify è il modo consigliato per verificare che i due file .dacpac
siano equivalenti.