Dela via


Konvertera ett ursprungligt SQL-projekt till ett SDK-projekt

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Att skapa ett nytt SQL-projekt i SDK-stil är en snabb uppgift. Men om du har befintliga SQL-projekt kan du konvertera dem till SQL-projekt i SDK-format för att dra nytta av de nya funktionerna.

När du har konverterat projektet kan du använda de nya funktionerna i SDK-projektet, till exempel:

  • stöd för plattformsoberoende kompilering
  • förenklat projektfilformat
  • paketreferenser

För att slutföra konverteringen noggrant gör vi följande:

  1. Skapa en säkerhetskopia av den ursprungliga projektfilen.
  2. Skapa en .dacpac fil från det ursprungliga projektet för jämförelse.
  3. Ändra projektfilen till ett SDK-projekt.
  4. Skapa en .dacpac fil från det ändrade projektet för jämförelse.
  5. Kontrollera att de .dacpac filerna är desamma.

SDK-projekt stöds inte i SQL Server Data Tools (SSDT) i Visual Studio. När du har konverterat måste du använda något av följande för att skapa eller redigera projektet:

  • kommandoraden
  • SQL Database Projects-tillägget i Visual Studio Code
  • SQL Database Projects-tillägget i Azure Data Studio
  • SQL Server Data Tools, SDK-format (förhandsversion) i Visual Studio 2022

Förutsättningar

Steg 1: Skapa en säkerhetskopia av den ursprungliga projektfilen

Innan du konverterar projektet skapar du en säkerhetskopia av den ursprungliga projektfilen. På så sätt kan du återgå till det ursprungliga projektet om det behövs.

I Utforskaren skapar du en kopia av .sqlproj-filen för projektet som du vill konvertera med .original läggs till i slutet av filtillägget. Till exempel blir MyProject.sqlprojMyProject.sqlproj.original.

Steg 2: Skapa en .dacpac fil från det ursprungliga projektet för jämförelse

Öppna projektet i Visual Studio 2022. Den .sqlproj filen är fortfarande i ursprungligt format, så du öppnar den i de ursprungliga SQL Server Data Tools.

Skapa projektet i Visual Studio genom att högerklicka på databasnoden i Solution Explorer och välja Skapa.

Om du vill skapa en .dacpac fil från det ursprungliga projektet måste du använda de ursprungliga SQL Server Data Tools (SSDT) i Visual Studio. Öppna projektfilen i Visual Studio 2022 med de ursprungliga SQL Server Data Tools installerade.

Skapa projektet i Visual Studio genom att högerklicka på databasnoden i Solution Explorer och välja Skapa.

Öppna projektmappen i VS Code eller Azure Data Studio. I Database Projects vy över VS Code eller Azure Data Studio högerklickar du på projektnoden och väljer Skapa.

SQL-databasprojekt kan skapas från kommandoraden med hjälp av kommandot dotnet build.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

Byggprocessen skapar en .dacpac fil i bin\Debug-mappen i projektet som standard. Med utforskaren letar du upp .dacpac som skapats av byggprocessen och kopierar den till en ny mapp utanför projektkatalogen som original_project.dacpac. Vi använder den här .dacpac filen som jämförelse för att verifiera vår konvertering senare.

Steg 3: Ändra projektfilen till ett SDK-liknande projekt

Att ändra projektfilen är en manuell process som bäst utförs i en textredigerare. Öppna filen .sqlproj i en textredigerare och gör följande ändringar:

Obligatoriskt: Lägg till SDK-referensen

I projektelementet lägger du till ett Sdk objekt för att referera till Microsoft.Build.Sql och den senaste versionen från https://www.nuget.org/packages/Microsoft.build.sql där #.#.# ingår i kodfragmentet nedan.

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

Krävs: Ta bort onödiga importer av kompileringsmål

Ursprungliga SQL-projekt refererar till flera byggmål och egenskaper i importinstruktioner. Förutom <Import/> objekt som du uttryckligen har lagt till, vilket är en unik och avsiktlig ändring, tar du bort rader som börjar med <Import ...>. Exempel som du kan ta bort om de finns i din .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" />
...

Obligatoriskt: Ta bort mappen Egenskaper

Ursprungliga SQL-projekt har en post för en Properties mapp som representerar åtkomst till projektegenskaperna i Solution Explorer. Det här objektet måste tas bort från projektfilen.

Exempel för att ta bort om det finns i din .sqlproj:

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

Obligatoriskt: Ta bort byggobjekt som ingår som standard

Ursprungliga SQL-projekt visar en lista över alla .sql filer som representerar databasobjekt explicit i projektfilen som <Build Include="..." /> objekt. I SQL-projekt i SDK-format inkluderas alla .sql filer i projektmappträdet (**/*.sql) som standard, så det är nödvändigt att ta bort <Build Include="...." /> objekten för dessa filer för att undvika problem med byggprestanda.

Rader som ska tas bort från projektfilen, till exempel:

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

Du bör inte ta bort <PreDeploy Include="..." /> eller <PostDeploy Include="..." /> objekt eftersom dessa noder avgör specifika beteende för dessa filer. Du bör inte heller ta bort <Build Include="..." /> objekt för filer som inte finns i SQL-projektmappträdet.

Valfritt: Ta bort SSDT-referenser

Det ursprungliga SQL Server Data Tools (SSDT) krävde extra innehåll i projektfilen för att identifiera Visual Studio-installationen. Dessa rader är onödiga i SQL-projekt i SDK-format och kan tas bort:

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

Valfritt: Ta bort standardversionsinställningar

Ursprungliga SQL-projekt innehåller två stora block för inställningar av utgåva och felsökning, medan i SDK-stil SQL-projekt är standardvärdena för dessa alternativ kända av SDK. Om du inte har anpassningar till bygginställningarna kan du överväga att ta bort följande block:

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

I projektegenskaper referens visas tillgängliga egenskaper och deras standardvärden.

Steg 4: Skapa en .dacpac fil från det ändrade projektet för jämförelse

SQL-projektet är inte längre kompatibelt med Visual Studio 2022. Om du vill skapa eller redigera projektet måste du använda något av följande:

  • kommandoraden
  • SQL Database Projects-tillägget i Visual Studio Code
  • SQL Database Projects-tillägget i Azure Data Studio
  • SQL Server Data Tools, SDK-format (förhandsversion) i Visual Studio 2022

Projektfilen är nu i SDK-format, men om du vill öppna den i Visual Studio 2022 måste du ha SQL Server Data Tools, SDK-format (förhandsversion) installerat. Öppna projektet i Visual Studio 2022 med SQL Server Data Tools, SDK-format (förhandsversion) installerat.

Öppna projektmappen i VS Code eller Azure Data Studio. I Database Projects vy över VS Code eller Azure Data Studio högerklickar du på projektnoden och väljer Skapa.

SQL-databasprojekt kan skapas från kommandoraden med hjälp av kommandot dotnet build.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

Byggprocessen skapar en .dacpac fil i bin\Debug-mappen i projektet som standard. Med utforskaren letar du upp .dacpac som skapats av byggprocessen och kopierar den till en ny mapp utanför projektkatalogen. Vi använder den här .dacpac filen som jämförelse för att verifiera vår konvertering senare.

Steg 5: Kontrollera att .dacpac filer är desamma

Du kan kontrollera att konverteringen lyckades genom att jämföra de .dacpac filer som skapats från de ursprungliga och ändrade projekten. Med schemajämförelse funktioner i SQL-projekt kan vi visualisera skillnaden i databasmodeller mellan de två .dacpac filerna. Alternativt kan kommandoradsverktyget DacpacVerify användas för att jämföra de två .dacpac-filerna, inklusive deras skript före/efter distribution och projektinställningar.

DacpacVerify är tillgängligt för installation som ett dotnet-verktyg. Installera verktyget genom att köra följande kommando:

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

Syntaxen för DacpacVerify är att ange filsökvägen till två .dacpac filer som dacpacverify <source DACPAC path> <target DACPAC path>. Om du vill jämföra de två .dacpac-filerna kör du följande kommando:

DacpacVerify original_project.dacpac modified_project.dacpac

Du kan använda verktyget för schemajämförelser i Visual Studio eller Azure Data Studio för att jämföra objekt i .dacpac-filerna.

Starta Visual Studio utan att ett projekt har lästs in. Gå till Verktyg>SQL Server>Ny Schemajämförelse. Välj den ursprungliga .dacpac filen som källa och den ändrade .dacpac filen som mål. Mer information om hur du använder Schemajämförelse i Visual Studio finns i använda Schemajämförelse för att jämföra olika databasdefinitioner.

Jämförelse av grafiskt schema är ännu inte tillgänglig i SQL-projekt i SDK-stil i Visual Studio. Använd Azure Data Studio för att jämföra scheman.

Schemajämförelse är inte tillgängligt i Visual Studio Code. Använd Azure Data Studio eller Visual Studio för att jämföra scheman.

I Azure Data Studio installerar du SQL Server Schema Compare-tillägget om det inte redan är installerat. Starta en ny schemajämförelse från kommandopaletten genom att öppna kommandopaletten med Ctrl/Cmd+Shift+P och skriva Schema Compare.

Välj den ursprungliga .dacpac filen som källa och den ändrade .dacpac filen som mål.

Grafisk schemajämförelse finns i Visual Studio och Azure Data Studio.

När schemajämförelse körs ska inga resultat visas. Bristen på skillnader indikerar att de ursprungliga och ändrade projekten är likvärdiga och producerar samma databasmodell i den .dacpac filen.

Not

Jämförelsen av .dacpac filer via schema jämförelse validerar inte skript före/efter distribution, refaktoriseringslogg eller andra projektinställningar. Den validerar bara databasmodellen. Att använda kommandoradsverktyget DacpacVerify är det rekommenderade sättet att verifiera att de två .dacpac filerna är likvärdiga.