Převod původního projektu SQL na projekt ve stylu sady SDK

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Vytvoření nového projektu SQL ve stylu sady SDK je rychlý úkol. Pokud však máte existující SQL projekty, můžete je převést na SQL projekty ve stylu SDK, abyste využili nové funkce.

Po převodu projektu můžete využít nové funkce projektu ve stylu SDK, například:

  • Podpora multiplatformních buildů
  • Zjednodušený formát projektových souborů
  • Odkazy na balíčky

Pro pečlivé dokončení konverze postupujte podle těchto kroků:

  1. Vytvořte zálohu původního souboru projektu.
  2. Vytvořte .dacpac soubor z původního projektu pro porovnání.
  3. Upravte soubor projektu na projekt ve stylu sady SDK.
  4. Vytvořte soubor .dacpac z upraveného projektu pro porovnání.
  5. Ověřte, že soubory .dacpac jsou stejné.

SQL Server Data Tools (SSDT) ve Visual Studio nepodporuje projekty ve stylu SDK. Po převodu projektu použijte jeden z následujících nástrojů k jeho vytvoření nebo úpravě:

  • Rozšíření pro projekty databáze SQL ve Visual Studio Code
  • Databázový DevOps v SQL Server Management Studio (SSMS)
  • Příkazový řádek
  • SQL Server Data Tools, SDK-styl (náhled) ve Visual Studio 2022

Note

Možná zjistíte, že projekt SQL obsahuje přizpůsobení, které rozšiřuje změny potřebné nad rámec těchto kroků. Kromě tohoto článku se dá úložiště DacFx GitHub použít k pochopení změn potřebných k upgradu z původního projektu SQL na projekty SQL ve stylu sady SDK.

Prerequisites

Krok 1: Vytvoření zálohy původního souboru projektu

Před převodem projektu vytvořte zálohu původního souboru projektu. Tímto způsobem se v případě potřeby můžete vrátit k původnímu projektu.

V Průzkumníku souborů vytvořte kopii .sqlproj souboru pro projekt, který chcete převést, s .original připojenou k příponě souboru. Například MyProject.sqlproj se stane MyProject.sqlproj.original.

Krok 2: Sestavení souboru .dacpac z původního projektu pro porovnání

Otevřete projekt ve Visual Studiu. Soubor .sqlproj je stále v původním formátu, takže ho otevřete v původních nástrojích SQL Server Data Tools.

Sestavte projekt v sadě Visual Studio tak, že kliknete pravým tlačítkem na uzel databáze v průzkumníku řešení a vyberete Sestavení.

Chcete-li vytvořit soubor .dacpac z původního projektu, musíte použít původní sql Server Data Tools (SSDT) v sadě Visual Studio. Otevřete soubor projektu v sadě Visual Studio s nainstalovanými původními nástroji SQL Server Data Tools.

Sestavte projekt v sadě Visual Studio tak, že kliknete pravým tlačítkem na uzel databáze v průzkumníku řešení a vyberete Sestavení.

Otevřete složku projektu v editoru Visual Studio Code. V zobrazení Databázové projekty editoru Visual Studio Code klikněte pravým tlačítkem myši na uzel projektu a vyberte Sestavit.

Chcete-li vytvořit soubor .dacpac z původního projektu, musíte použít původní sql Server Data Tools (SSDT) v sadě Visual Studio. Otevřete soubor projektu v sadě Visual Studio s nainstalovanými původními nástroji SQL Server Data Tools.

Sestavte projekt v sadě Visual Studio tak, že kliknete pravým tlačítkem na uzel databáze v průzkumníku řešení a vyberete Sestavení.

Pomocí příkazu můžete vytvářet projekty databáze SQL z příkazového dotnet build řádku.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

Proces sestavení ve výchozím nastavení vytvoří soubor .dacpac ve složce bin\Debug projektu. Pomocí File Explorer najděte soubor vytvořený .dacpac procesem sestavování a zkopírujte ho do nové složky mimo adresář projektu jako original_project.dacpac. Použijte tento .dacpac soubor pro porovnání, abyste později potvrdili svou konverzi.

Krok 3: Úprava souboru projektu na projekt ve stylu sady SDK

Úprava souboru projektu je ruční proces, který se nejlépe provádí v textovém editoru. Otevřete soubor .sqlproj v textovém editoru a proveďte následující změny:

Povinné: Přidání odkazu na sadu SDK

Uvnitř elementu projektu přidejte položku Sdk jako odkaz na Microsoft.Build.Sql i nejnovější verzi z https://www.nuget.org/packages/Microsoft.build.sql, který obsahuje #.#.# v níže uvedeném úryvku kódu.

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

Povinné: Odeberte nepotřebné importy sestavovacího cíle

Původní projekty SQL odkazují na několik cílů sestavení a vlastností v příkazech Import. Kromě <Import/> položek, které jste explicitně přidali, což je jedinečná a záměrná změna, odeberte řádky, které začínají <Import ...>. Příklady, které mají být odebrány, pokud jsou přítomny ve vašem .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" />
...

Povinné: Odebrat složku Vlastnosti

Původní projekty SQL mají položku pro složku Properties, která představovala přístup k vlastnostem projektu v Průzkumníku řešení. Odstraňte tuto položku ze souboru projektu.

Příklad odstranění, pokud je přítomen v .sqlproj:

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

Povinné: Odebrání položek sestavení zahrnutých ve výchozím nastavení

Původní projekty SQL uvádějí všechny .sql soubory představující databázové objekty explicitně v souboru projektu jako položky <Build Include="..." />. V SQL projektech ve stylu SDK jsou všechny .sql soubory ve stromu složek projektu (**/*.sql) zahrnuty ve výchozím nastavení. Odstraňte .sql soubory uvedené v položkách <Build Include="...." /> pro tyto soubory, abyste předešli problémům s výkonem buildu.

Odstraňte z projektového souboru řádky jako následující:

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

Neodstraňujte:

  • <Build Include="..." /> položky pro .sql soubory, které nejsou ve stromu složek projektu SQL
  • položky <PreDeploy Include="..." /> nebo <PostDeploy Include="..." />, protože tyto uzly určují specifické chování pro tyto soubory
  • Položky, které nejsou .sql soubory, například .publish.xml soubory v <None Include="..." /> položkách, .refactorlog.xml soubory v <RefactorLog Include="..." /> položkách nebo .xsd soubory v <Build Include="..." /> položkách

Volitelné: Odebrání odkazů SSDT

Původní sql Server Data Tools (SSDT) vyžadoval další obsah v souboru projektu k detekci instalace sady Visual Studio. Tyto řádky nejsou nutné v projektech SQL ve stylu sady SDK a je možné je odebrat:

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

Volitelné: Odebrání výchozího nastavení sestavení

Původní projekty SQL obsahují dva velké bloky pro nastavení sestavení Release a Debug, zatímco u projektů SQL typu SDK jsou výchozí hodnoty těchto voleb již známé. Pokud nemáte žádné vlastní úpravy nastavení sestavení, zvažte odebrání těchto bloků:

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

Seznam vlastností projektu uvádí dostupné vlastnosti a jejich výchozí hodnoty.

Krok 4: Soubory řešení

Na soubor projektu se může odkazovat v souboru řešení (.sln). Pokud máte soubor řešení, aktualizujte ho tak, aby odkazoval na nový SDK-stylový projektový soubor. Pokud soubor řešení nemáte, můžete tuto část přeskočit a přejít ke kroku 5.

Možnost 1: Vytvoření nového souboru řešení

Pokud soubor řešení obsahuje pouze SQL projekt, je jednodušší soubor řešení odstranit a vytvořit nový soubor řešení v projektu ve stylu SDK.

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

Možnost 2: Úprava souboru řešení

Pokud soubor řešení obsahuje více projektů, aktualizujte soubor řešení tak, aby odkazoval na nový SDK-stylový projektový soubor. Soubor řešení můžete upravit v textovém editoru a změnit odkaz na projekt na nový soubor projektu ve stylu sady SDK. Odkaz na projekt v souboru řešení by měl vypadat takto:

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

Hodnota PROJECT_TYPE_GUID pro projekt Microsoft.Build.Sql je 42EA0DBD-9CF1-443E-919E-BE9C484E4577. Je PROJECT_GUID to jedinečný identifikátor projektu nalezený v elementu souboru <ProjectGuid> projektu. Pokud máte u projektu soubor řešení, nemusíte měnit hodnotu PROJECT_GUID . Změňte hodnotu PROJECT_TYPE_GUID na identifikátor GUID typu projektu Microsoft.Build.Sql.

Krok 5: Sestavení .dacpac souboru z upraveného projektu pro porovnání

Projekt SQL už není kompatibilní se sadou Visual Studio 2022. Pro vytvoření nebo úpravu projektu použijte jednu z následujících možností:

  • Příkazový řádek
  • Rozšíření projektů databáze SQL pro Visual Studio Code
  • SQL Server Data Tools, SDK-styl (náhled) ve Visual Studio 2022
  • SQL Server Management Studio (SSMS) s úlohou Database DevOps (Preview)

Soubor projektu je teď ve formátu stylu sady SDK, ale pokud ho chcete otevřít v sadě Visual Studio 2022, musíte mít nainstalované nástroje SQL Server Data Tools ve stylu sady SDK (Preview). Otevřete projekt v sadě Visual Studio 2022 s nástroji SQL Server Data Tools nainstalovanými ve stylu SDK (preview) .

Otevřete složku projektu v editoru Visual Studio Code. V zobrazení Databázové projekty editoru Visual Studio Code klikněte pravým tlačítkem myši na uzel projektu a vyberte Sestavit.

Otevřete soubor projektu v aplikaci SQL Server Management Studio (SSMS) s nainstalovanou úlohou Database DevOps (Preview). V Průzkumníku objektů klikněte pravým tlačítkem myši na databázový projekt a vyberte Sestavit.

Pomocí příkazu můžete vytvářet projekty databáze SQL z příkazového dotnet build řádku.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

Proces sestavení ve výchozím nastavení vytvoří soubor .dacpac ve složce bin\Debug projektu. Pomocí File Explorer najděte soubory vytvořené .dacpac procesem sestavování a zkopírujte je do nové složky mimo adresář projektu. Použijte tento .dacpac soubor pro porovnání, abyste později potvrdili svou konverzi.

Krok 6: Ověřte, zda jsou soubory .dacpac stejné

Pokud chcete ověřit, že převod proběhl úspěšně, porovnejte soubory .dacpac vytvořené z původních a upravených projektů. Použijte možnosti porovnání schémat SQL projektů k vizualizaci rozdílů v databázových modelech mezi těmito dvěma .dacpac soubory. Alternativně použijte příkazový nástroj DacpacVerify k porovnání obou .dacpac souborů, včetně jejich před- a po-nasazených skriptů a nastavení projektu.

DacpacVerify si můžete nainstalovat jako nástroj pro dotnet. Nástroj nainstalujete spuštěním následujícího příkazu:

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

Syntaxe DacpacVerify je specifikovat cestu k dvěma souborům .dacpac jako dacpacverify <source DACPAC path> <target DACPAC path>. Pokud chcete porovnat dva .dacpac soubory, spusťte následující příkaz:

DacpacVerify original_project.dacpac modified_project.dacpac

K porovnání objektů v souborech můžete použít nástroj pro porovnání schématu .dacpac .

Spusťte Visual Studio bez načteného projektu. Přejděte na Tools>SQL Server>Nové porovnání schématu. Vyberte původní .dacpac soubor jako zdroj a upravený .dacpac soubor jako cíl. Další informace o použití funkce Schema Compare v sadě Visual Studio najdete v tématu porovnání schémat k porovnání různých definic databází.

Porovnání grafického schématu zatím není k dispozici ve verzi náhledu SQL projektů ve stylu SDK v sadě Visual Studio. K porovnání schémat použijte Visual Studio Code.

V editoru Visual Studio Code nainstalujte rozšíření SQL Server Schema Compare , pokud ještě není nainstalované. Spusťte nové porovnání schématu z palety příkazů tak, že otevřete paletu příkazů pomocí Ctrl/Cmd+Shift+P a zadáte Schema Compare.

Vyberte původní .dacpac soubor jako zdroj a upravený .dacpac soubor jako cíl.

Porovnání grafického schématu není v aplikaci SQL Server Management Studio k dispozici. K porovnání schémat použijte Visual Studio Code nebo Visual Studio.

Porovnání grafického schématu je k dispozici v sadě Visual Studio a editoru Visual Studio Code.

Při porovnávání schémat by se neměly zobrazovat žádné výsledky. Nedostatek rozdílů značí, že původní a upravené projekty jsou ekvivalentní, což vytváří stejný databázový model v souboru .dacpac.

Note

Porovnání .dacpac souborů prostřednictvím porovnání schématu neověřuje skripty před nasazením, refaktorlog ani jiná nastavení projektu. Ověřuje pouze model databáze. Použití nástroje příkazového řádku DacpacVerify je doporučený způsob, jak ověřit, že dva .dacpac soubory jsou ekvivalentní.