Udostępnij za pośrednictwem


Konwertowanie oryginalnego projektu SQL na projekt w stylu zestawu SDK

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL Database w ramach usługi 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
  • referencje pakietów

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)

Warunki wstępne

  • .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. Skompilowanie pliku .dacpac z 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 5. 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. Porównanie schematów możliwości projektów SQL umożliwia 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.

Notatka

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.