Condividi tramite


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 tra piattaforme
  • formato di file di progetto semplificato
  • riferimenti ai pacchetti

Per completare attentamente la conversione, si eseguirà quanto illustrato di seguito:

  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.

I progetti in stile SDK non sono supportati da 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
  • estensione progetti di database SQL in Visual Studio Code
  • estensione progetti di database SQL in Azure Data Studio

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’articolo del progetto aggiungere un articolo Sdk per fare riferimento a Microsoft.Build.Sql e alla versione più recente da https://www.nuget.org/packages/Microsoft.build.sql.

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0">
  <Sdk Name="Microsoft.Build.Sql" Version="0.2.0-preview" />
...

Obbligatorio: rimuovere le importazioni di destinazione di compilazione non necessarie

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>

Facoltativo: rimuovere i riferimenti a SSDT

Il contenuto aggiuntivo originale di SQL Server Data Tools (SSDT) necessario 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>

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
  • estensione progetti di database SQL in Visual Studio Code
  • estensione progetti di database SQL in Azure Data Studio

Il file di progetto è ora in formato SDK, ma per aprirlo in Visual Studio 2022, è necessario che SQL Server Data Tools, SDK-style (anteprima) sia installato e che il progetto disponga dell'estensionedi file .sqlprojx. 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, individuare .dacpac creato dal processo di compilazione e copiarlo in una nuova cartella all'esterno 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 schemi dei progetti SQL consentono di visualizzare la differenza nei modelli di database.

È possibile usare lo strumento di confronto schemi in Visual Studio, Visual Studio Code o Azure Data Studio per confrontare i file .dacpac. Sono disponibili anche strumenti della community basati sulla libreria DacFx .NET.

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. La conversione di .dacpac in un archivio .zip e il confronto manuale del contenuto possono fornire un confronto più dettagliato.