Поделиться через


Преобразование исходного проекта SQL в проект в стиле SDK

Область применения:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureБаза данных SQL в Microsoft Fabric

Создание проекта SQL в стиле ПАКЕТА SDK — это быстрая задача. Однако если у вас есть существующие проекты SQL, их можно преобразовать в проекты SQL в стиле ПАКЕТА SDK, чтобы воспользоваться новыми функциями.

После преобразования проекта можно использовать новые функции проекта в стиле ПАКЕТА SDK, например:

  • поддержка кроссплатформенной сборки
  • упрощенный формат файла проекта
  • Ссылки на пакеты

Для тщательного завершения преобразования мы будем:

  1. Создайте резервную копию исходного файла проекта.
  2. .dacpac Создайте файл из исходного проекта для сравнения.
  3. Измените файл проекта в проект в стиле ПАКЕТА SDK.
  4. .dacpac Создайте файл из измененного проекта для сравнения.
  5. Убедитесь, что .dacpac файлы одинаковы.

Проекты стиля SDK не поддерживаются в SQL Server Data Tools (SSDT) в Visual Studio. После преобразования необходимо использовать одно из следующих элементов для сборки или редактирования проекта:

  • командная строка
  • расширение SQL Database Projects в Visual Studio Code
  • расширение База данных SQL Projects в Azure Data Studio
  • SQL Server Data Tools в стиле SDK (предварительный просмотр) в Visual Studio 2022

Предварительные условия

Шаг 1. Создание резервной копии исходного файла проекта

Перед преобразованием проекта создайте резервную копию исходного файла проекта. Таким образом, при необходимости можно вернуться к исходному проекту.

В проводнике создайте копию файла .sqlproj для проекта, который вы хотите преобразовать, с присоединением .original к расширению файла. Например, MyProject.sqlproj преобразуется в MyProject.sqlproj.original.

Шаг 2. Создание .dacpac файла из исходного проекта для сравнения

Откройте проект в Visual Studio 2022. Файл .sqlproj по-прежнему находится в исходном формате, поэтому его можно открыть в исходном sql Server Data Tools.

Соберите проект в Visual Studio, щелкнув правой кнопкой мыши по узлу базы данных в Обозревателе решений и выбрав "Сборка".

Чтобы создать .dacpac файл из исходного проекта, необходимо использовать SQL Server Data Tools (SSDT) в Visual Studio. Откройте файл проекта в Visual Studio 2022 с установленными исходными средствами данных SQL Server.

Соберите проект в Visual Studio, щелкнув правой кнопкой мыши на узле базы данных в Обозревателе решений и выбрав "Сборка".

Откройте папку проекта в VS Code или Azure Data Studio. В представлении проектов баз данных VS Code или Azure Data Studio щелкните правой кнопкой мыши узел проекта и выберите "Сборка".

Проекты базы данных SQL можно создавать из командной dotnet build строки с помощью команды.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

Процесс сборки создает .dacpac файл в bin\Debug папке проекта по умолчанию. Используя Проводник, найдите .dacpac, созданный процессом сборки, и скопируйте его в новую папку за пределами каталога проекта под именем original_project.dacpac. Мы используем этот .dacpac файл для сравнения, чтобы проверить преобразование позже.

Шаг 3. Изменение файла проекта на проект в стиле SDK

Изменение файла проекта — это ручной процесс, который лучше всего выполняется в текстовом редакторе. .sqlproj Откройте файл в текстовом редакторе и внесите следующие изменения:

Обязательный: добавление ссылки на пакет SDK

В элементе проекта добавьте элемент Sdk для ссылки на Microsoft.Build.Sql и последнюю версию из https://www.nuget.org/packages/Microsoft.build.sql, где #.#.# включен в фрагмент ниже.

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

Необходимо удалить ненужные импорты целей сборки

Исходные проекты SQL ссылались на несколько целевых объектов сборки и свойств в инструкциях import. <Import/> За исключением элементов, которые вы явно добавили, что является уникальным и преднамеренным изменением, удалите строки, начинающиеся с<Import ...>. Примеры, которые следует удалить, если они присутствуют в .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" />
...

Обязательный: удаление папки свойств

Исходные проекты SQL содержат запись для папки Properties, которая предоставляет доступ к свойствам проекта в Обозревателе решений. Этот элемент необходимо удалить из файла проекта.

Пример для удаления, если он присутствует в вашем .sqlproj:

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

Обязательный: удаление элементов сборки, включенных по умолчанию

Исходные проекты SQL явно перечисляют в файле проекта все файлы .sql, представляющие объекты базы данных, в качестве элементов <Build Include="..." />. В SQL-проектах в стиле SDK все файлы .sql в дереве папок проекта (**/*.sql) включены по умолчанию, поэтому необходимо удалить элементы <Build Include="...." /> для этих файлов, чтобы избежать проблем с производительностью сборки.

Строки, которые должны быть удалены из файла проекта, например:

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

Не следует удалять элементы <PreDeploy Include="..." /> или <PostDeploy Include="..." />, так как эти узлы диктуют определенное поведение для этих файлов. Кроме того, не следует удалять элементы <Build Include="..." /> для файлов, не входящих в дерево папок проекта SQL.

Необязательно. Удаление ссылок SSDT

Оригинальные SQL Server Data Tools (SSDT) требовали дополнительного содержимого в файле проекта для обнаружения установки Visual Studio. Эти строки являются ненужными в проектах SQL в стиле ПАКЕТА SDK и могут быть удалены:

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

Необязательно. Удаление параметров сборки по умолчанию

Исходные проекты SQL включают два больших блока для параметров режимов Release и Debug, в то время как в проектах SQL в стиле SDK настройки по умолчанию для этих режимов задаются SDK. Если у вас нет настроек для параметров сборки, попробуйте удалить следующие блоки:

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

Справочник свойств проекта под номером перечисляет доступные свойства и их значения по умолчанию.

Шаг 4. Создание .dacpac файла из измененного проекта для сравнения

Проект SQL больше не совместим с Visual Studio 2022. Чтобы создать или изменить проект, необходимо использовать один из следующих способов:

  • командная строка
  • расширение SQL Database Projects в Visual Studio Code
  • расширение SQL Database Projects в Azure Data Studio
  • Инструменты SQL Server Data Tools в стиле SDK (попробуйте предварительную версию) в Visual Studio 2022.

Файл проекта теперь находится в формате пакета SDK, но чтобы открыть его в Visual Studio 2022, необходимо установить SQL Server Data Tools, стиль SDK (предварительная версия). Откройте проект в Visual Studio 2022 с установленными предварительными версиями SQL Server Data Tools и SDK-style.

Откройте папку проекта в VS Code или Azure Data Studio. В представлении проектов баз данных VS Code или Azure Data Studio щелкните правой кнопкой мыши узел проекта и выберите "Сборка".

Проекты базы данных SQL можно создавать из командной dotnet build строки с помощью команды.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

Процесс сборки создает .dacpac файл в bin\Debug папке проекта по умолчанию. Используя проводник, найдите .dacpac, созданный процессом сборки, и скопируйте его в новую папку за пределами каталога проекта. Мы используем этот .dacpac файл для сравнения, чтобы проверить преобразование позже.

Шаг 5. Убедитесь, что .dacpac файлы одинаковы

Чтобы убедиться, что преобразование выполнено успешно, сравните .dacpac файлы, созданные из исходных и измененных проектов. Возможности сравнения схем проектов SQL позволяют визуализировать разницу в моделях баз данных.

Средство сравнения схем можно использовать в Visual Studio, Visual Studio Code или Azure Data Studio для сравнения .dacpac файлов. Средства сообщества, основанные на библиотеке DacFx .NET, также доступны.

Запустите Visual Studio без загрузки проекта. Перейдите в Средства>SQL Server>Сравнение новых схем. Выберите исходный .dacpac файл в качестве источника и измененного .dacpac файла в качестве целевого объекта. Для получения дополнительной информации об использовании функции Schema Compare в Visual Studio см. статью «Использование сравнения схем для сравнения различных определений баз данных».

Сравнение графических схем пока недоступно в предварительной версии SQL-проектов в стиле SDK в Visual Studio. Используйте Azure Data Studio для сравнения схем.

Сравнение схем недоступно в Visual Studio Code. Используйте Azure Data Studio или Visual Studio для сравнения схем.

В Azure Data Studio установите расширение сравнения схем SQL Server, если оно еще не установлено. Запустите новое сравнение схем из палитры команд, открыв палитру команд с помощью Ctrl/Cmd+Shift+P и введя Schema Compare.

Выберите исходный .dacpac файл в качестве источника и измененного .dacpac файла в качестве целевого объекта.

Сравнение графических схем доступно в Visual Studio и Azure Data Studio.

При выполнении сравнения схем не должны отображаться результаты. Отсутствие различий означает, что исходные и измененные проекты эквивалентны, создавая ту же модель базы данных в .dacpac файле.

Примечание.

Сравнение .dacpac файлов с помощью сравнения схем не проверяет скрипты предварительного и постразвертывательного развертывания, refactorlog или другие параметры проекта. Он проверяет только модель базы данных. Преобразование .dacpac в архив .zip и ручное сравнение содержимого позволяет выполнять более детальное сравнение.