Een oorspronkelijk SQL-project converteren naar een SDK-project

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Het maken van een nieuw SQL-project in SDK-stijl is een snelle taak. Als je echter bestaande SQL-projecten hebt, kun je die omzetten naar SDK-achtige SQL-projecten om optimaal gebruik te maken van de nieuwe functies.

Nadat je het project hebt geconverteerd, kun je de nieuwe functies van het SDK-achtige project gebruiken, zoals:

  • Ondersteuning voor cross-platform builds
  • Vereenvoudigd projectbestandsformaat
  • Pakketverwijzingen

Om de conversie zorgvuldig te voltooien, volgt u deze stappen:

  1. Maak een back-up van het oorspronkelijke projectbestand.
  2. Bouw een .dacpac-bestand van het oorspronkelijke project ter vergelijking.
  3. Wijzig het projectbestand in een SDK-project.
  4. Bouw een .dacpac-bestand op basis van het gewijzigde project ter vergelijking.
  5. Controleer of de .dacpac bestanden hetzelfde zijn.

SQL Server Data Tools (SSDT) in Visual Studio ondersteunt geen SDK-achtige projecten. Nadat je het project hebt geconverteerd, gebruik je een van de volgende tools om het project te bouwen of te bewerken:

  • De SQL Database Projects-extensie in Visual Studio Code
  • Database DevOps in SQL Server Management Studio (SSMS)
  • De opdrachtregel
  • De SQL Server Data Tools in SDK-stijl (preview-versie) in Visual Studio 2022

Note

Het kan zijn dat uw SQL-project aanpassing bevat die de wijzigingen die nodig zijn, verder uitbreidt dan deze stappen. Naast dit artikel kan de DacFx GitHub-opslagplaats worden gebruikt om inzicht te hebben in de wijzigingen die nodig zijn om een upgrade uit te voeren van een oorspronkelijk SQL-project naar SQL-projecten in SDK-stijl.

Prerequisites

Stap 1: Een back-up maken van het oorspronkelijke projectbestand

Voordat u het project converteert, maakt u een back-up van het oorspronkelijke projectbestand. Op deze manier kunt u zo nodig terugkeren naar het oorspronkelijke project.

Maak in Verkenner een kopie van het bestand .sqlproj voor het project dat je wilt converteren, waarbij .original aan de bestandsextensie wordt toegevoegd. MyProject.sqlproj wordt bijvoorbeeld MyProject.sqlproj.original.

Stap 2: een .dacpac-bestand maken van het oorspronkelijke project ter vergelijking

Open het project in Visual Studio. Het .sqlproj-bestand heeft nog steeds de oorspronkelijke indeling, dus u opent het in de oorspronkelijke SQL Server Data Tools.

Bouw het project in Visual Studio door met de rechtermuisknop op het databaseknooppunt in Solution Explorer- te klikken en Buildte selecteren.

Als u een .dacpac-bestand wilt maken vanuit het oorspronkelijke project, moet u de oorspronkelijke SQL Server Data Tools (SSDT) in Visual Studio gebruiken. Open het projectbestand in Visual Studio waarop de oorspronkelijke SQL Server Data Tools is geïnstalleerd.

Bouw het project in Visual Studio door met de rechtermuisknop op het databaseknooppunt in Solution Explorer- te klikken en Buildte selecteren.

Open de projectmap in Visual Studio Code. Klik in de weergave Databaseprojecten van Visual Studio Code met de rechtermuisknop op het projectknooppunt en selecteer Build.

Als u een .dacpac-bestand wilt maken vanuit het oorspronkelijke project, moet u de oorspronkelijke SQL Server Data Tools (SSDT) in Visual Studio gebruiken. Open het projectbestand in Visual Studio waarop de oorspronkelijke SQL Server Data Tools is geïnstalleerd.

Bouw het project in Visual Studio door met de rechtermuisknop op het databaseknooppunt in Solution Explorer- te klikken en Buildte selecteren.

U kunt SQL-databaseprojecten maken vanaf de opdrachtregel met behulp van de dotnet build opdracht.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

Het buildproces maakt standaard een .dacpac-bestand in de map bin\Debug van het project. Zoek in Verkenner het .dacpac dat door het buildproces is gemaakt en kopieer het naar een nieuwe map buiten de projectmap als original_project.dacpac. Gebruik dit .dacpac bestand ter vergelijking om je conversie later te valideren.

Stap 3: Het projectbestand wijzigen in een SDK-project

Het wijzigen van het projectbestand is een handmatig proces dat het best wordt uitgevoerd in een teksteditor. Open het .sqlproj-bestand in een teksteditor en breng de volgende wijzigingen aan:

Vereist: de SDK-verwijzing toevoegen

Voeg in het projectelement een Sdk-item toe om te verwijzen naar Microsoft.Build.Sql en de nieuwste versie uit https://www.nuget.org/packages/Microsoft.build.sql waar #.#.# is opgenomen in het onderstaande fragment.

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

Vereist: Onnodige builddoelimporten verwijderen

Oorspronkelijke SQL-projecten verwijzen naar verschillende builddoelen en eigenschappen in Import-instructies. Met uitzondering van <Import/> items die u expliciet hebt toegevoegd, wat een unieke en opzettelijke wijziging is, verwijdert u regels die beginnen met <Import ...>. Voorbeelden die u kunt verwijderen als deze aanwezig zijn in uw .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" />
...

Vereist: eigenschappenmap verwijderen

Oorspronkelijke SQL-projecten hebben een vermelding voor een Properties map die de toegang tot de projecteigenschappen in Solution Explorer vertegenwoordigde. Verwijder dit item uit het projectbestand.

Voorbeeld van verwijderen als deze aanwezig is in uw .sqlproj:

<ItemGroup>
  <Folder Include="Properties" />
</ItemGroup>

Vereist: Build-items verwijderen die standaard zijn opgenomen

Oorspronkelijke SQL-projecten bevatten alle .sql bestanden die databaseobjecten expliciet in het projectbestand vertegenwoordigen als <Build Include="..." /> items. In SQL-projecten in SDK-stijl worden alle bestanden .sql in de mappenstructuur van het project (**/*.sql) standaard opgenomen. Verwijder de .sql bestanden die in <Build Include="...." /> items voor die bestanden zijn gespecificeerd om problemen met de bouwprestaties te voorkomen.

Verwijder regels zoals de volgende uit het projectbestand:

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

Niet verwijderen:

  • <Build Include="..." /> items voor .sql bestanden die niet in de mappenstructuur van het SQL-project voorkomen
  • <PreDeploy Include="..." /> of <PostDeploy Include="..." /> items, omdat deze nodes specifiek gedrag voor die bestanden bepalen
  • Items die geen .sql-bestanden zijn, zoals .publish.xml-bestanden in <None Include="..." />-items, .refactorlog.xml-bestanden in <RefactorLog Include="..." />-items, of .xsd-bestanden in <Build Include="..." />-items

Optioneel: SSDT-verwijzingen verwijderen

Voor de oorspronkelijke SQL Server Data Tools (SSDT) is extra inhoud in het projectbestand vereist om de Installatie van Visual Studio te detecteren. Deze regels zijn niet nodig in SQL-projecten in SDK-stijl en kunnen worden verwijderd:

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

Optioneel: standaard build-instellingen verwijderen

Originele SQL-projecten bevatten twee grote blokken voor Release- en Debug-buildinstellingen, terwijl de SDK in SDK-stijl SQL-projecten de standaardinstellingen voor deze opties kent. Als u geen aanpassingen aan de build-instellingen hebt, kunt u overwegen deze blokken te verwijderen:

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

De projecteigenschappen verwijzing bevat de beschikbare eigenschappen en de standaardinstellingen.

Stap 4: Oplossingsbestanden

Er kan naar uw projectbestand worden verwezen in een oplossingsbestand (.sln). Als je een oplossingsbestand hebt, werk het dan bij om te verwijzen naar het nieuwe SDK-achtige projectbestand. Als u geen oplossingsbestand hebt, kunt u deze sectie overslaan en doorgaan met stap 5.

Optie 1: Een nieuw oplossingsbestand maken

Als het oplossingsbestand alleen het SQL-project bevat, is het makkelijker om het oplossingsbestand te verwijderen en een nieuw oplossingsbestand aan te maken met het SDK-achtige project.

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

Optie 2: Het oplossingsbestand bewerken

Als het oplossingsbestand meerdere projecten bevat, werk het oplossingsbestand dan bij om te verwijzen naar het nieuwe SDK-achtige projectbestand. U kunt het oplossingsbestand bewerken in een teksteditor en de projectverwijzing wijzigen in het nieuwe SDK-projectbestand. De projectreferentie in het oplossingsbestand moet er als volgt uitzien:

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

De PROJECT_TYPE_GUID waarde voor een Microsoft. Build.SQL-project is 42EA0DBD-9CF1-443E-919E-BE9C484E4577. De PROJECT_GUID is een unieke identificatie voor het project die wordt gevonden in het projectbestandelement <ProjectGuid> . Als je een oplossingsbestand bij je project hebt, hoef je de PROJECT_GUID waarde niet te wijzigen. Verander de PROJECT_TYPE_GUID waarde naar Microsoft. Build.SQL projecttype GUID.

Stap 5: Een .dacpac bestand maken op basis van het gewijzigde project ter vergelijking

Het SQL-project is niet langer compatibel met Visual Studio 2022. Om het project te bouwen of te bewerken, gebruik je een van de volgende opties:

  • De opdrachtregel
  • De SQL Database Projects-extensie in Visual Studio Code
  • De SQL Server Data Tools in SDK-stijl (de preview) in Visual Studio 2022
  • SQL Server Management Studio (SSMS) met de Database DevOps-workload (preview)

Het projectbestand heeft nu de SDK-indeling, maar om het te openen in Visual Studio 2022, moet de SQL Server Data Tools, SDK-stijl (preview) zijn geïnstalleerd. Open het project in Visual Studio 2022 met SQL Server Data Tools en de SDK-stijl (preview) geïnstalleerd.

Open de projectmap in Visual Studio Code. Klik in de weergave Databaseprojecten van Visual Studio Code met de rechtermuisknop op het projectknooppunt en selecteer Build.

Open het projectbestand in SQL Server Management Studio (SSMS) met de Database DevOps-workload (preview) geïnstalleerd. Klik in Objectverkenner met de rechtermuisknop op het databaseproject en selecteer Build.

U kunt SQL-databaseprojecten maken vanaf de opdrachtregel met behulp van de dotnet build opdracht.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

Het buildproces maakt standaard een .dacpac-bestand in de map bin\Debug van het project. Gebruik Verkenner om de .dacpac te zoeken die door het buildproces is aangemaakt en kopieer die naar een nieuwe map buiten de projectmap. Gebruik dit .dacpac bestand ter vergelijking om je conversie later te valideren.

Stap 6: Controleer of de .dacpac bestanden hetzelfde zijn

Als u wilt controleren of de conversie is geslaagd, vergelijkt u de .dacpac bestanden die zijn gemaakt op basis van de oorspronkelijke en gewijzigde projecten. Gebruik de schemavergelijkingsmogelijkheden van SQL-projecten om het verschil in databasemodellen tussen de twee .dacpac bestanden te visualiseren. Alternatief kunt u de DacpacVerify-commandoregeltool gebruiken om de twee .dacpac bestanden te vergelijken, inclusief hun scripts voor en na de uitrol en projectinstellingen.

Je kunt DacpacVerify installeren als een dotnet-tool. Voer de volgende opdracht uit om het hulpprogramma te installeren:

dotnet tool install --global Microsoft.DacpacVerify --prerelease

De syntaxis voor DacpacVerify is het opgeven van het bestandspad naar twee .dacpac bestanden als dacpacverify <source DACPAC path> <target DACPAC path>. Voer de volgende opdracht uit om de twee .dacpac bestanden te vergelijken:

DacpacVerify original_project.dacpac modified_project.dacpac

U kunt het hulpprogramma schema vergelijken gebruiken om objecten in de .dacpac bestanden te vergelijken.

Start Visual Studio zonder dat een project is geladen. Ga naar Hulpmiddelen>SQL Server>Nieuwe Schema Vergelijking. Selecteer het oorspronkelijke .dacpac-bestand als de bron en het gewijzigde .dacpac-bestand als doel. Zie schema vergelijken in Visual Studio voor meer informatie over het gebruik van schema vergelijken om verschillende databasedefinities te vergelijken.

Grafische schemavergelijking is nog niet beschikbaar in de preview-versie van SQL-projecten in SDK-stijl in Visual Studio. Visual Studio Code gebruiken om schema's te vergelijken.

Installeer in Visual Studio Code de extensie SQL Server Schema Compare als deze nog niet is geïnstalleerd. Start een nieuwe schemavergelijking vanuit het opdrachtpalet door het opdrachtenpalet te openen met Ctrl/Cmd+Shift+P en Schema Comparete typen.

Selecteer het oorspronkelijke .dacpac-bestand als de bron en het gewijzigde .dacpac-bestand als doel.

Grafische schemavergelijking is niet beschikbaar in SQL Server Management Studio. Gebruik Visual Studio Code of Visual Studio om schema's te vergelijken.

Grafische schemavergelijking is beschikbaar in Visual Studio en Visual Studio Code.

Wanneer je een schema-vergelijking uitvoert, zouden er geen resultaten moeten worden weergegeven. Het ontbreken van verschillen geeft aan dat de oorspronkelijke en gewijzigde projecten gelijkwaardig zijn, waardoor hetzelfde databasemodel in het .dacpac-bestand wordt geproduceerd.

Note

De vergelijking van .dacpac bestanden via schemavergelijking valideert geen scripts voor of na implementatie, refactorlog, of andere projectinstellingen. Het databasemodel wordt alleen gevalideerd. Het gebruik van het opdrachtregelprogramma DacpacVerify is de aanbevolen manier om te controleren of de twee .dacpac bestanden gelijkwaardig zijn.