Convertire un progetto SQL originale in un progetto in stile SDK

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di Azure SQLDatabase SQL in Microsoft Fabric

La creazione di un nuovo progetto SQL in stile SDK è un'attività rapida. Tuttavia, se hai già progetti SQL, puoi convertirli in progetti SQL in stile SDK per sfruttare le nuove funzionalità.

Dopo aver convertito il progetto, puoi utilizzare le nuove funzionalità del progetto in stile SDK, come:

  • Supporto per build multipiattaforma
  • Formato di file di progetto semplificato
  • Riferimenti ai pacchetti

Per completare la conversione con attenzione, segui questi passaggi:

  1. Creare un backup del file di progetto originale.
  2. Compilare un file .dacpac dal progetto originale per il confronto.
  3. Modificare il file di progetto in un progetto in stile SDK.
  4. Compilare un file .dacpac dal progetto modificato per il confronto.
  5. Verificare che i file .dacpac siano uguali.

SQL Server Data Tools (SSDT) in Visual Studio non supporta progetti in stile SDK. Dopo aver convertito il progetto, usa uno dei seguenti strumenti per costruire o modificare il progetto:

  • L'estensione SQL Database Projects in Visual Studio Code
  • DevOps di database in SQL Server Management Studio (SSMS)
  • riga di comando
  • SQL Server Data Tools in stile SDK (anteprima) in Visual Studio 2022

Note

È possibile che il progetto SQL contenga la personalizzazione che estende le modifiche necessarie oltre questi passaggi. Oltre a questo articolo, è possibile usare il repository GitHub DacFx per comprendere le modifiche necessarie per eseguire l'aggiornamento da un progetto SQL originale a progetti SQL in stile SDK.

Prerequisites

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, crea una copia del .sqlproj file del progetto che vuoi convertire con .original aggiunta all'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. 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 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 Visual Studio Code. Nella visualizzazione Progetti di database di Visual Studio Code fare clic con il pulsante destro del mouse sul nodo del progetto e scegliere 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 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.

È possibile compilare progetti di database SQL dalla riga di comando usando il dotnet build comando .

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. In Esplora file, individua il .dacpac creato dal processo di compilazione e copialo in una nuova cartella al di fuori della directory del progetto, rinominandolo original_project.dacpac. Usa questo .dacpac file per confrontare e validare la conversione in seguito.

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. Rimuovi questo elemento dal file del progetto.

Esempio da rimuovere se presenti 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 .sql i file nell'albero delle cartelle del progetto (**/*.sql) sono inclusi di default. Rimuovi i .sql file specificati negli <Build Include="...." /> elementi per quei file per evitare problemi di prestazioni della build.

Rimuovi linee come le seguenti dal file del progetto:

  <Build Include="SalesLT/Products.sql" />
  <Build Include="SalesLT/SalesLT.sql" />
  <Build Include="SalesLT/Categories.sql" />
  <Build Include="SalesLT/CategoriesProductCount.sql" />

Non rimuovere:

  • <Build Include="..." /> elementi per .sql file che non sono nella struttura di cartelle del progetto SQL
  • <PreDeploy Include="..." /> oppure <PostDeploy Include="..." /> items, perché questi nodi determinano comportamenti specifici per quei file
  • Elementi che non sono file .sql, come file .publish.xml in elementi <None Include="..." />, file .refactorlog.xml in elementi <RefactorLog Include="..." /> o file .xsd in elementi <Build Include="..." />

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 grandi blocchi per le impostazioni di build Release e Debug, mentre nei progetti SQL in stile SDK l'SDK conosce i valori predefiniti di queste opzioni. 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: File di soluzione

È possibile fare riferimento al file di progetto in un file di soluzione (.sln). Se hai un file solution, aggiornalo per fare riferimento al nuovo file progetto in stile SDK. Se non si dispone di un file di soluzione, è possibile ignorare questa sezione e procedere al passaggio 5.

Opzione 1: Creare un nuovo file di soluzione

Se il file di soluzione contiene solo il progetto SQL, è più facile rimuovere il file di soluzione e creare un nuovo file di soluzione con il progetto in stile SDK.

dotnet new sln --name MySolution
dotnet sln MySolution.sln add MyDatabaseProject\MyDatabaseProject.sqlproj

Opzione 2: Modificare il file della soluzione

Se il file di soluzione contiene più progetti, aggiorna il file di soluzione per fare riferimento al nuovo file di progetto in stile SDK. È possibile modificare il file della soluzione in un editor di testo e modificare il riferimento al nuovo file di progetto in stile SDK. Il riferimento al progetto nel file della soluzione dovrebbe essere simile al seguente:

Project("{PROJECT_TYPE_GUID}") = "MyDatabaseProject", "MyDatabaseProject\MyDatabaseProject.sqlproj", "{PROJECT_GUID}"
EndProject

Il valore PROJECT_TYPE_GUID per un progetto Microsoft.Build.Sql è 42EA0DBD-9CF1-443E-919E-BE9C484E4577. Il PROJECT_GUID è un identificatore unico per il progetto che si trova nell'elemento file <ProjectGuid> del progetto. Se hai un file di soluzione con il tuo progetto, non devi cambiare il PROJECT_GUID valore. Cambia il valore PROJECT_TYPE_GUID con il GUID del tipo di progetto Microsoft.Build.Sql.

Passaggio 5: Compilare un .dacpac file dal progetto modificato per il confronto

Il progetto SQL non è più compatibile con Visual Studio 2022. Per costruire o modificare il progetto, utilizza una delle seguenti opzioni:

  • riga di comando
  • L'estensione Progetti di database SQL per Visual Studio Code
  • SQL Server Data Tools in stile SDK (anteprima) in Visual Studio 2022
  • SQL Server Management Studio (SSMS) con il carico di lavoro DevOps del database (anteprima)

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 Visual Studio Code. Nella visualizzazione Progetti di database di Visual Studio Code fare clic con il pulsante destro del mouse sul nodo del progetto e scegliere Compila.

Aprire il file di progetto in SQL Server Management Studio (SSMS) con il carico di lavoro Database DevOps (anteprima) installato. In Esplora oggetti fare clic con il pulsante destro del mouse sul progetto di database e scegliere Compila.

È possibile compilare progetti di database SQL dalla riga di comando usando il dotnet build comando .

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. In Esplora file, individua il .dacpac creato dal processo di compilazione e copialo in una nuova cartella esterna alla directory del progetto. Usa questo .dacpac file per confrontare e validare la conversione in seguito.

Passaggio 6: Verificare che i .dacpac file siano gli stessi

Per verificare che la conversione sia riuscita, confrontare i file .dacpac creati dai progetti originali e modificati. Utilizza le capacità di confronto degli schemi dei progetti SQL per visualizzare la differenza nei modelli di database tra i due .dacpac file. In alternativa, utilizza l'utilità da riga di comando DacpacVerify per confrontare i due .dacpac file, inclusi i loro script pre/post-deployment e le impostazioni del progetto.

Puoi installare DacpacVerify 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 per confrontare gli oggetti nei .dacpac file.

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 Visual Studio Code per confrontare gli schemi.

In Visual Studio Code installare l'estensione Confronto schema di SQL Server 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 dello schema grafico non è disponibile in SQL Server Management Studio. Usare Visual Studio Code o Visual Studio per confrontare gli schemi.

Il confronto dello schema grafico è disponibile in Visual Studio e Visual Studio Code.

Quando esegui il confronto degli schemi, non dovrebbero essere mostrati risultati. La mancanza di differenze indica che i progetti originali e modificati sono equivalenti, producendo lo stesso modello di database nel file .dacpac.

Note

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.