Udostępnij za pomocą


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 przekonwertować je na projekty SQL w stylu zestawu SDK, aby skorzystać z nowych funkcji.

Po przekonwertowaniu projektu możesz użyć nowych funkcji projektu w stylu zestawu SDK, takich jak:

  • Obsługa kompilacji międzyplatformowych
  • uproszczony format pliku projektu
  • odwołania do pakietu

Aby dokładnie ukończyć konwersję, wykonamy następujące czynności:

  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.

Projekty w stylu zestawu SDK nie są obsługiwane w narzędziach SQL Server Data Tools (SSDT) w programie Visual Studio. Po przekonwertowaniu należy użyć jednego z następujących elementów, aby skompilować lub edytować projekt:

  • wiersz polecenia
  • rozszerzenie SQL Database Projects w programie Visual Studio Code
  • rozszerzenie SQL Database Projects w narzędziu Azure Data Studio
  • narzędzia SQL Server Data Tools w programie Visual Studio 2022 w stylu zestawu SDK (wersja zapoznawcza)

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

  • .NET 8 SDK

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 ma zostać przekonwertowany z .original dołączonym na końcu 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 2022. 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 2022 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 VS Code lub narzędziu Azure Data Studio. W widoku Database Projects programu VS Code lub Azure Data Studio kliknij prawym przyciskiem myszy węzeł projektu i wybierz pozycję Build.

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

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 Eksploratora plików, znajdź .dacpac utworzony przez proces kompilacji i skopiuj go do nowego folderu poza katalogiem projektu jako original_project.dacpac. Użyjemy tego pliku .dacpac do porównania, aby zweryfikować konwersję później.

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ń. Ten element należy usunąć 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 zestawu SDK wszystkie pliki .sql w drzewie folderów projektu (**/*.sql) są domyślnie dołączane, dlatego usunięcie elementów <Build Include="...." /> dla tych plików jest konieczne, aby uniknąć problemów z wydajnością kompilacji.

Wiersze, które powinny zostać usunięte z pliku projektu, na przykład:

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

Nie należy usuwać elementów <PreDeploy Include="..." /> ani <PostDeploy Include="..." />, ponieważ te węzły określają konkretne zachowanie dla tych plików. Nie należy również usuwać elementów <Build Include="..." /> w przypadku plików, które nie znajdują się w drzewie folderów projektu SQL.

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 obejmują dwa duże bloki dla ustawień budowania Release i Debug, podczas gdy w projektach SQL w stylu SDK domyślne wartości dla tych opcji są znane przez SDK. 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 zestawu 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

W przypadku pliku rozwiązania, który zawiera tylko projekt SQL, łatwiej jest usunąć plik rozwiązania i utworzyć nowy plik rozwiązania z projektem w stylu zestawu SDK.

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

Opcja 2. Edytowanie pliku rozwiązania

Gdy plik rozwiązania zawiera wiele projektów, należy zaktualizować plik rozwiązania, aby odwoływać się do nowego pliku projektu w stylu zestawu 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, a PROJECT_GUID jest unikatowym identyfikatorem projektu znajdującym się w elemencie pliku projektu <ProjectGuid>. Jeśli masz plik rozwiązania z projektem, PROJECT_GUID wartość nie jest wymagana do zmiany i może pozostać taka sama jak w oryginalnym pliku projektu. Wartość musi zostać zmieniona na identyfikator GUID typu projektu Microsoft.Build.Sql PROJECT_TYPE_GUID.

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

Projekt SQL nie jest już zgodny z programem Visual Studio 2022. Aby skompilować lub edytować projekt, należy użyć jednego z następujących elementów:

  • wiersz polecenia
  • rozszerzenie SQL Database Projects w programie Visual Studio Code
  • rozszerzenie SQL Database Projects w narzędziu Azure Data Studio
  • narzędzia SQL Server Data Tools w programie Visual Studio 2022 w stylu zestawu SDK (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 VS Code lub narzędziu Azure Data Studio. W widoku Database Projects programu VS Code lub Azure Data Studio kliknij prawym przyciskiem myszy węzeł projektu i wybierz pozycję Build.

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

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 Eksploratora plików, znajdź .dacpac utworzony przez proces kompilacji i skopiuj go do nowego folderu poza katalogiem projektu. Użyjemy tego pliku .dacpac do porównania, aby zweryfikować konwersję później.

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. Możliwości porównania schematów w projektach SQL pozwalają na wizualizację różnic w modelach baz danych między dwoma plikami .dacpac. Alternatywnie narzędzie wiersza polecenia DacpacVerify może służyć do porównywania dwóch plików .dacpac, w tym ich skryptów przed/po wdrożeniu i ustawień projektu.

Narzędzie DacpacVerify jest dostępne do zainstalowania 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 w programie Visual Studio lub narzędziu Azure Data Studio, 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 narzędzia Azure Data Studio.

Porównanie schematów nie jest dostępne w programie Visual Studio Code. Porównanie schematów przy użyciu programu Azure Data Studio lub Visual Studio.

W narzędziu Azure Data Studio zainstaluj rozszerzenie SQL Server Schema Compare, 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 jest dostępne w programach Visual Studio i Azure Data Studio.

Po uruchomieniu porównania schematu 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.