Konwertowanie oryginalnego projektu SQL na projekt w stylu zestawu SDK

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Tworzenie nowego projektu SQL w stylu zestawu SDK to szybkie zadanie. Jeśli jednak masz istniejące projekty SQL, możesz je przekształcić w projekty SQL w stylu SDK, aby wykorzystać nowe funkcje.

Po konwersji projektu możesz korzystać z nowych funkcji projektu w stylu SDK, takich jak:

  • Obsługa kompilacji wieloplatformowej
  • Uproszczony format plików projektów
  • Odwołania do pakietów

Aby dokładnie przeprowadzić konwersję, postępuj zgodnie z następującymi krokami:

  1. Utwórz kopię zapasową oryginalnego pliku projektu.
  2. Skompiluj plik .dacpac z oryginalnego projektu w celu porównania.
  3. Zmodyfikuj plik projektu na projekt w stylu SDK.
  4. Skompiluj plik .dacpac z zmodyfikowanego projektu w celu porównania.
  5. Sprawdź, czy pliki .dacpac są takie same.

SQL Server Data Tools (SSDT) w Visual Studio nie obsługuje projektów w stylu SDK. Po konwersji projektu użyj jednego z następujących narzędzi do jego budowy lub edycji:

  • Rozszerzenie SQL Database Projects w Visual Studio Code
  • Database DevOps w SQL Server Management Studio (SSMS)
  • Wiersz polecenia
  • SQL Server Data Tools w stylu zestawu SDK (podgląd) w programie Visual Studio 2022

Note

Może się okazać, że projekt SQL zawiera dostosowania, które wykraczają poza wymagane zmiany związane z tymi czynnościami. Oprócz tego artykułu repozytorium GitHub DacFx może służyć do zrozumienia zmian niezbędnych do uaktualnienia z oryginalnego projektu SQL do projektów SQL w stylu zestawu SDK.

Prerequisites

Krok 1. Tworzenie kopii zapasowej oryginalnego pliku projektu

Przed przekonwertowaniem projektu utwórz kopię zapasową oryginalnego pliku projektu. W razie potrzeby można przywrócić oryginalny projekt.

W Eksploratorze plików utwórz kopię pliku .sqlproj dla projektu, który chcesz przekonwertować, z dopisanym .original do rozszerzenia pliku. Na przykład MyProject.sqlproj staje się MyProject.sqlproj.original.

Krok 2. Kompilowanie pliku .dacpac z oryginalnego projektu w celu porównania

Otwórz projekt w programie Visual Studio. Plik .sqlproj jest nadal w oryginalnym formacie, więc można go otworzyć w oryginalnych narzędziach SQL Server Data Tools.

Skompiluj projekt w programie Visual Studio, klikając prawym przyciskiem myszy węzeł bazy danych w eksploratorze rozwiązań i wybierając pozycję Build.

Aby utworzyć plik .dacpac z oryginalnego projektu, należy użyć oryginalnych narzędzi SQL Server Data Tools (SSDT) w programie Visual Studio. Otwórz plik projektu w programie Visual Studio z zainstalowanymi oryginalnymi narzędziami SQL Server Data Tools.

Skompiluj projekt w programie Visual Studio, klikając prawym przyciskiem myszy węzeł bazy danych w eksploratorze rozwiązań i wybierając pozycję Build.

Otwórz folder projektu w programie Visual Studio Code. W widoku Projekty bazy danych programu Visual Studio Code kliknij prawym przyciskiem myszy węzeł projektu i wybierz polecenie Kompiluj.

Aby utworzyć plik .dacpac z oryginalnego projektu, należy użyć oryginalnych narzędzi SQL Server Data Tools (SSDT) w programie Visual Studio. Otwórz plik projektu w programie Visual Studio z zainstalowanymi oryginalnymi narzędziami SQL Server Data Tools.

Skompiluj projekt w programie Visual Studio, klikając prawym przyciskiem myszy węzeł bazy danych w eksploratorze rozwiązań i wybierając pozycję Build.

Projekty bazy danych SQL można tworzyć z poziomu wiersza polecenia przy użyciu dotnet build polecenia .

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

Proces kompilacji domyślnie tworzy plik .dacpac w folderze bin\Debug projektu. Korzystając z File Explorera, zlokalizuj plik utworzony .dacpac przez proces budowy i skopiuj go do nowego folderu poza katalogiem projektu jako .original_project.dacpac Użyj tego .dacpac pliku do porównania, aby później zweryfikować swoją konwersję.

Krok 3: Zmodyfikuj plik projektu do projektu w stylu zestawu SDK

Modyfikowanie pliku projektu jest procesem ręcznym, najlepiej wykonanym w edytorze tekstów. Otwórz plik .sqlproj w edytorze tekstów i wprowadź następujące zmiany:

Wymagane: Dodaj odwołanie do zestawu SDK

Wewnątrz elementu projektu dodaj element Sdk, aby odwołać się do Microsoft.Build.Sql i najnowszej wersji z https://www.nuget.org/packages/Microsoft.build.sql, gdzie #.#.# znajduje się w poniższym fragmencie kodu.

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

Wymagane: Usuń niepotrzebne importy obiektów docelowych kompilacji

Oryginalne projekty SQL odwołują się do kilku obiektów docelowych i właściwości kompilacji w instrukcjach Import. Z wyjątkiem elementów <Import/>, które zostały jawnie dodane, co jest unikatową i celową zmianą, usuń wiersze rozpoczynające się od <Import ...>. "Przykłady do usunięcia, jeśli są obecne w Twoim .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" />
...

Wymagane: Usuń folder Właściwości

Oryginalne projekty SQL mają wpis dla folderu Properties, który reprezentował dostęp do właściwości projektu w Eksploratorze rozwiązań. Usuń ten element z pliku projektu.

Przykład do usunięcia, jeśli jest obecny w .sqlproj:

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

Wymagane: usuń elementy kompilacji dołączone domyślnie

Oryginalne projekty SQL zawierają listę wszystkich plików .sql reprezentujących obiekty bazy danych jawnie w pliku projektu jako elementy <Build Include="..." />. W projektach SQL w stylu SDK wszystkie .sql pliki w drzewie folderów projektu (**/*.sql) są domyślnie uwzględniane. Usuń .sql pliki określone w elementach <Build Include="...." /> tych plików, aby uniknąć problemów z wydajnością buildów.

Usuń z pliku projektu takie linie jak poniższe:

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

Nie usuwaj:

  • <Build Include="..." /> elementy dla .sql plików, których nie ma w drzewie folderów projektu SQL
  • <PreDeploy Include="..." /> lub elementów <PostDeploy Include="..." />, ponieważ te węzły określają specyficzne zachowanie dla tych plików
  • Elementy, które nie są plikami .sql, na przykład pliki .publish.xml w elementach <None Include="..." />, pliki .refactorlog.xml w elementach <RefactorLog Include="..." /> lub pliki .xsd w elementach <Build Include="..." />

Opcjonalnie: Usuń odwołania do SSDT

Oryginalne narzędzia SQL Server Data Tools (SSDT) wymagały dodatkowej zawartości w pliku projektu w celu wykrycia instalacji programu Visual Studio. Te wiersze są niepotrzebne w projektach SQL w stylu zestawu SDK i można je usunąć:

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

Opcjonalnie: Usuwanie domyślnych ustawień kompilacji

Oryginalne projekty SQL zawierają dwa duże bloki dla ustawień Release i Debug, podczas gdy w projektach SQL w stylu SDK SDK zna domyślne ustawienia tych opcji. Jeśli nie masz dostosowań ustawień kompilacji, rozważ usunięcie tych bloków:

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

Lista właściwości projektu odniesienia zawiera dostępne właściwości i ich domyślne wartości.

Krok 4. Pliki rozwiązania

Plik projektu może być przywołyny w pliku rozwiązania (.sln). Jeśli masz plik rozwiązania, zaktualizuj go, aby odwoływał się do nowego pliku projektu w stylu SDK. Jeśli nie masz pliku rozwiązania, możesz pominąć tę sekcję i przejść do kroku 5.

Opcja 1. Tworzenie nowego pliku rozwiązania

Jeśli plik rozwiązania zawiera tylko projekt SQL, łatwiej jest usunąć plik rozwiązania i utworzyć nowy plik rozwiązania w projekcie w stylu SDK.

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

Opcja 2. Edytowanie pliku rozwiązania

Jeśli plik rozwiązania zawiera wiele projektów, zaktualizuj plik rozwiązania, aby odwoływał się do nowego pliku projektu w stylu SDK. Plik rozwiązania można edytować w edytorze tekstów i zmienić odwołanie do projektu w nowym pliku projektu w stylu zestawu SDK. Odwołanie do projektu w pliku rozwiązania powinno wyglądać następująco:

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

Wartość PROJECT_TYPE_GUID dla projektu Microsoft.Build.Sql to 42EA0DBD-9CF1-443E-919E-BE9C484E4577. Jest to PROJECT_GUID unikalny identyfikator projektu znajdujący się w elemencie pliku <ProjectGuid> projektu. Jeśli masz plik rozwiązania przy projekcie, nie musisz zmieniać PROJECT_GUID wartości. Zmień wartość PROJECT_TYPE_GUID na identyfikator GUID typu projektu Microsoft.Build.Sql.

Krok 5. Kompilowanie .dacpac pliku ze zmodyfikowanego projektu w celu porównania

Projekt SQL nie jest już zgodny z programem Visual Studio 2022. Aby zbudować lub edytować projekt, użyj jednej z następujących opcji:

  • Wiersz polecenia
  • Rozszerzenie SQL Database Projects w Visual Studio Code
  • SQL Server Data Tools w stylu zestawu SDK (podgląd) w programie Visual Studio 2022
  • SQL Server Management Studio (SSMS) z obciążeniem DevOps bazy danych (wersja zapoznawcza)

Plik projektu jest teraz w formacie w stylu zestawu SDK, ale aby go otworzyć w programie Visual Studio 2022, musisz mieć zainstalowane narzędzia SQL Server Data Tools, w stylu zestawu SDK (wersja zapoznawcza). Otwórz projekt w programie Visual Studio 2022 z zainstalowanymi narzędziami SQL Server Data Tools , stylu SDK (wersja zapoznawcza).

Otwórz folder projektu w programie Visual Studio Code. W widoku Projekty bazy danych programu Visual Studio Code kliknij prawym przyciskiem myszy węzeł projektu i wybierz polecenie Kompiluj.

Otwórz plik projektu w programie SQL Server Management Studio (SSMS) z zainstalowanym obciążeniem DevOps bazy danych (wersja zapoznawcza). W Eksploratorze obiektów kliknij prawym przyciskiem myszy projekt bazy danych i wybierz polecenie Kompiluj.

Projekty bazy danych SQL można tworzyć z poziomu wiersza polecenia przy użyciu dotnet build polecenia .

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

Proces kompilacji domyślnie tworzy plik .dacpac w folderze bin\Debug projektu. Korzystając z File Explorera, zlokalizuj plik utworzony .dacpac przez proces budowy i skopiuj go do nowego folderu poza katalogiem projektu. Użyj tego .dacpac pliku do porównania, aby później zweryfikować swoją konwersję.

Krok 6: Sprawdź, czy pliki .dacpac są takie same

Aby sprawdzić, czy konwersja zakończyła się pomyślnie, porównaj pliki .dacpac utworzone z oryginalnych i zmodyfikowanych projektów. Wykorzystaj możliwości porównywania schematów w projektach SQL, aby zwizualizować różnice w modelach baz danych między dwoma .dacpac plikami. Alternatywnie, użyj narzędzia poleceń DacpacVerify, aby porównać oba .dacpac pliki, w tym ich skrypty przed- i po wdrożeniu oraz ustawienia projektu.

Możesz zainstalować DacpacVerify jako narzędzie dotnet. Aby zainstalować narzędzie, uruchom następujące polecenie:

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

Składnia elementu DacpacVerify polega na określeniu ścieżki do dwóch plików .dacpac jako dacpacverify <source DACPAC path> <target DACPAC path>. Aby porównać dwa pliki .dacpac, uruchom następujące polecenie:

DacpacVerify original_project.dacpac modified_project.dacpac

Możesz użyć narzędzia do porównywania schematów, aby porównać obiekty w plikach .dacpac .

Uruchom program Visual Studio bez załadowanego projektu. Przejdź do Narzędzia>SQL Server>Nowe Porównanie Schematów. Wybierz oryginalny plik .dacpac jako źródło i zmodyfikowany plik .dacpac jako docelowy. Aby uzyskać więcej informacji na temat używania funkcji Schema Compare w programie Visual Studio, zobacz użycie funkcji Schema Compare do porównania różnych definicji baz danych.

Porównanie schematów graficznych nie jest jeszcze dostępne w wersji zapoznawczej projektów SQL w stylu zestawu SDK w programie Visual Studio. Porównanie schematów przy użyciu programu Visual Studio Code.

W programie Visual Studio Code zainstaluj rozszerzenie PORÓWNANIE schematów programu SQL Server , jeśli nie zostało jeszcze zainstalowane. Uruchom nowe porównanie schematów z palety poleceń, otwierając paletę poleceń przy użyciu Ctrl/Cmd+Shift+P i wpisując Schema Compare.

Wybierz oryginalny plik .dacpac jako źródło i zmodyfikowany plik .dacpac jako docelowy.

Porównanie schematów graficznych nie jest dostępne w programie SQL Server Management Studio. Użyj Visual Studio Code lub Visual Studio do porównywania schematów.

Porównanie schematów graficznych jest dostępne w programach Visual Studio i Visual Studio Code.

Podczas porównywania schematów nie powinny być wyświetlane żadne wyniki. Brak różnic wskazuje, że oryginalne i zmodyfikowane projekty są równoważne, tworząc ten sam model bazy danych w pliku .dacpac.

Note

Porównanie plików .dacpac za pomocą porównania schematu nie weryfikuje skryptów przed/po wdrożeniu, dziennika refaktoryzacji ani innych ustawień projektu. Weryfikuje tylko model bazy danych. Użycie narzędzia wiersza polecenia DacpacVerify jest zalecanym sposobem sprawdzenia, czy dwa pliki .dacpac są równoważne.