Преобразование исходного проекта SQL в проект в стиле SDK
Область применения:SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
База данных SQL в Microsoft Fabric
Создание проекта SQL в стиле ПАКЕТА SDK — это быстрая задача. Однако если у вас есть существующие проекты SQL, их можно преобразовать в проекты SQL в стиле ПАКЕТА SDK, чтобы воспользоваться новыми функциями.
После преобразования проекта можно использовать новые функции проекта в стиле ПАКЕТА SDK, например:
- поддержка кроссплатформенной сборки
- упрощенный формат файла проекта
- Ссылки на пакеты
Для тщательного завершения преобразования мы будем:
- Создайте резервную копию исходного файла проекта.
-
.dacpac
Создайте файл из исходного проекта для сравнения. - Измените файл проекта в проект в стиле ПАКЕТА SDK.
-
.dacpac
Создайте файл из измененного проекта для сравнения. - Убедитесь, что
.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
и ручное сравнение содержимого позволяет выполнять более детальное сравнение.