Condividi tramite


Convertire un progetto SQL originale in un progetto in stile SDK

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureDatabase 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:

  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 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.