Delen via


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 u echter bestaande SQL-projecten hebt, kunt u ze converteren naar SQL-projecten in SDK-stijl om te profiteren van de nieuwe functies.

Zodra u het project hebt geconverteerd, kunt u de nieuwe functies van het SDK-project gebruiken, zoals:

  • platformoverschrijdende buildondersteuning
  • vereenvoudigde projectbestandsindeling
  • pakketverwijzingen

Om de conversie zorgvuldig te voltooien, doen we het volgende:

  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.

SDK-projecten worden niet ondersteund in SQL Server Data Tools (SSDT) in Visual Studio. Nadat het project is geconverteerd, moet u een van de volgende gebruiken om het project te bouwen of te bewerken:

  • de opdrachtregel
  • de extensie "SQL Database Projects" in Visual Studio Code
  • de extensie SQL Database Projects in Azure Data Studio
  • de SQL Server Data Tools, SDK-stijl (voorvertoning) in Visual Studio 2022

Voorwaarden

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 .sqlproj-bestand voor het project dat u wilt converteren met .original toegevoegd aan het einde van de bestandsextensie. 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 2022. 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 2022 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 VS Code of Azure Data Studio. Klik in de databaseprojecten weergave van VS Code of Azure Data Studio met de rechtermuisknop op het projectknooppunt en selecteer Build.

SQL-databaseprojecten kunnen worden gebouwd vanaf de opdrachtregel met behulp van de opdracht dotnet build.

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 Bestandsverkenner om de .dacpac die door het buildproces is gemaakt te lokaliseren en kopieer dit naar een nieuwe map buiten de projectmap met de naam original_project.dacpac. We gebruiken dit .dacpac-bestand voor vergelijking om onze 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. Dit item moet worden verwijderd 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 DE SDK-stijl worden alle .sql bestanden in de projectmapstructuur (**/*.sql) standaard opgenomen, zodat het verwijderen van de <Build Include="...." /> items voor deze bestanden nodig is om prestatieproblemen met de build te voorkomen.

Regels die uit het projectbestand moeten worden verwijderd, bijvoorbeeld:

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

Verwijder <PreDeploy Include="..." /> of <PostDeploy Include="..." /> items niet, omdat deze knooppunten specifiek gedrag dicteren voor deze bestanden. U moet ook <Build Include="..." /> items niet verwijderen voor bestanden die zich niet in de mapstructuur van het SQL-project bevinden.

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

Oorspronkelijke SQL-projecten bevatten twee grote blokken voor build-instellingen voor release en foutopsporing, terwijl in SQL-projecten in SDK-stijl de standaardwaarden voor deze opties bekend zijn door de SDK. 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: Een .dacpac-bestand maken van het gewijzigde project ter vergelijking

Het SQL-project is niet langer compatibel met Visual Studio 2022. Als u het project wilt maken of bewerken, moet u een van de volgende handelingen uitvoeren:

  • de opdrachtregel
  • de SQL Database Projectextensie in Visual Studio Code
  • de SQL Database Projects-extensie in Azure Data Studio
  • de SQL Server Data Tools, SDK-stijl (voorvertoning) in Visual Studio 2022

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 map van het project in VS Code of Azure Data Studio. Klik in de databaseprojecten weergave van VS Code of Azure Data Studio met de rechtermuisknop op het projectknooppunt en selecteer Build.

SQL-databaseprojecten kunnen worden gebouwd vanaf de opdrachtregel met behulp van de opdracht dotnet build.

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 de verkenner om de .dacpac te vinden die door het buildproces is gemaakt en kopieer deze naar een nieuwe map buiten de projectmap. We gebruiken dit .dacpac-bestand voor vergelijking om onze conversie later te valideren.

Stap 5: 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. Met de schemavergelijking mogelijkheden van SQL-projecten kunnen we het verschil in databasemodellen tussen de twee .dacpac-bestanden visualiseren. U kunt ook het opdrachtregelprogramma DacpacVerify gebruiken om de twee .dacpac bestanden te vergelijken, inclusief de scripts vóór/na de implementatie en projectinstellingen.

DacpacVerify is beschikbaar voor installatie als een dotnet-hulpprogramma. 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 in Visual Studio of Azure Data Studio 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. Gebruik Azure Data Studio om schema's te vergelijken.

Schemavergelijking is niet beschikbaar in Visual Studio Code. Gebruik Azure Data Studio of Visual Studio om schema's te vergelijken.

Installeer in Azure Data Studio de SQL Server Schema Compare-extensie 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 beschikbaar in Visual Studio en Azure Data Studio.

Wanneer schemavergelijking wordt uitgevoerd, moeten er geen resultaten 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.

Notitie

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.