Sdílet prostřednictvím


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

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL Database v Microsoft Fabric

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

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

  • Podpora sestavení napříč platformami
  • Zjednodušený formát souboru projektu
  • odkazy na balíčky

Abychom převod dokončili pečlivě, budeme:

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

Projekty ve stylu sady SDK se v sadě Visual Studio nepodporují v SQL Server Data Tools (SSDT). Po převodu je nutné k sestavení nebo úpravě projektu použít jednu z následujících možností:

  • příkazový řádek
  • rozšíření SQL Database Projects v editoru Visual Studio Code
  • rozšíření SQL Database Projects v nástroji Azure Data Studio
  • SQL Server Data Tools, sdk-style (Preview) v sadě Visual Studio 2022

Požadavky

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 souboru .sqlproj pro projekt, který chcete převést s .original připojenou na konec přípony 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 v sadě Visual Studio 2022. 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 2022 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 ve VS Code nebo Azure Data Studiu. Ve zobrazení databázových projektů v nástroji VS Code nebo Azure Data Studio klikněte pravým tlačítkem na uzel projektu a vyberte Sestavení.

Projekty databáze SQL je možné sestavit z příkazového řádku pomocí příkazu dotnet build.

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í Průzkumníka souborů vyhledejte .dacpac vytvořené procesem sestavení a zkopírujte ho do nové složky mimo adresář projektu jako original_project.dacpac. Tento .dacpac soubor použijeme k porovnání a později ověříme převod.

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í. Tuto položku je potřeba odebrat 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="..." />. Ve stylem SDK SQL projektech jsou v adresářové struktuře projektu (.sql) ve výchozím nastavení zahrnuty všechny **/*.sql soubory, takže je nutné odebrat <Build Include="...." /> položky pro tyto soubory, aby se zabránilo problémům s výkonem sestavení.

Řádky, které by se měly odebrat ze souboru projektu, například:

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

Položky <PreDeploy Include="..." /> ani <PostDeploy Include="..." /> byste neměli odstraňovat, protože tyto uzly určují konkrétní chování pro tyto soubory. Také byste neměli odebírat položky <Build Include="..." /> pro soubory, které nejsou ve stromu složek projektu SQL.

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í vydané verze a ladění, zatímco v projektech SQL ve stylu sady SDK jsou výchozí hodnoty pro tyto možnosti známé sadou SDK. 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: Sestavení souboru .dacpac z upraveného projektu pro porovnání

Projekt SQL už není kompatibilní se sadou Visual Studio 2022. Pokud chcete vytvořit nebo upravit projekt, musíte použít jednu z těchto možností:

  • příkazový řádek
  • rozšíření SQL Database Projects v editoru Visual Studio Code
  • rozšíření SQL Database Projects v nástroji Azure Data Studio
  • SQL Server Data Tools, SDK-style (Preview) v prostředí Visual Studio 2022

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 ve VS Code nebo Azure Data Studiu. Ve zobrazení databázových projektů v nástroji VS Code nebo Azure Data Studio klikněte pravým tlačítkem na uzel projektu a vyberte Sestavení.

Projekty databáze SQL je možné sestavit z příkazového řádku pomocí příkazu dotnet build.

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í Průzkumníka souborů vyhledejte .dacpac vytvořené procesem sestavení a zkopírujte ho do nové složky mimo adresář projektu. Tento .dacpac soubor použijeme k porovnání a později ověříme převod.

Krok 5: Ověření, že soubory .dacpac jsou 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ů. Porovnání schématu schopností projektů SQL umožňuje vizualizovat rozdíl v databázových modelech mezi těmito dvěma .dacpac soubory. Případně můžete použít nástroj příkazového řádku DacpacVerify k porovnání dvou .dacpac souborů, včetně jejich skriptů před nasazením a nastavení projektu.

DacpacVerify je k dispozici pro instalaci jako nástroj 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

Pomocí nástroje pro porovnání schématu v sadě Visual Studio nebo Azure Data Studio můžete porovnat objekty v .dacpac souborech.

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 Azure Data Studio.

Porovnání schématu není v editoru Visual Studio Code k dispozici. K porovnání schémat použijte Azure Data Studio nebo Visual Studio.

V Nástroji Azure Data Studio 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 je k dispozici v aplikaci Visual Studio a Azure Data Studio.

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

Poznámka

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