Преобразование исходного проекта 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 Projects в Visual Studio Code
- расширение База данных SQL Projects в Azure Data Studio
Необходимые компоненты
Шаг 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="0.2.0-preview" />
...
Обязательный: удаление ненужных импортов целевого объекта сборки
Исходные проекты 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>
Необязательно. Удаление ссылок 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 включают два больших блока для параметров сборки выпуска и отладки, в то время как в проектах 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 Projects в Visual Studio Code
- расширение База данных SQL Projects в Azure Data Studio
Файл проекта теперь находится в формате пакета SDK, но чтобы открыть его в Visual Studio 2022, необходимо установить SQL Server Data Tools, пакет SDK (предварительная версия), а проект должен иметь расширение .sqlprojx
файла. Откройте проект в Visual Studio 2022 с установленным пакетом SDK (предварительная версия) с помощью SQL Server Data Tools.
Откройте папку проекта в 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
файла в качестве целевого объекта. Дополнительные сведения об использовании сравнения схем в 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
файлов с помощью сравнения схем не проверяет скрипты предварительного и после развертывания, рефактолог или другие параметры проекта. Он проверяет только модель базы данных. Преобразование .dacpac
.zip
в архив и сравнение содержимого вручную может обеспечить более подробное сравнение.