Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
Базы данных Azure SQL
Управляемому экземпляру Azure SQL
Базе данных SQL в Microsoft Fabric
Понимание различий в определении объектов между базой данных и проектом SQL может предоставить ценные сведения о состоянии базы данных и проекта, в том числе во время текущей разработки или регрессии устранения неполадок. Проекты SQL включают средства для визуализации различий, анализа изменений, необходимых для обновления базы данных, импорта изменений из базы данных в набор файлов проекта SQL и проверки скриптов T-SQL, которые будут выполняться для обновления базы данных для сопоставления проекта.
В этой статье рассматриваются методы сравнения базы данных и проекта SQL с помощью различных подходов:
- С помощью схемы можно визуализироватьразличия между базами данных и (или) проектами. Это сравнение поможет определить изменения, которые необходимо синхронизировать между базой данных и проектом.
- Отчет о развертывании можно использовать для суммирования и автоматизации проверок тех изменений, необходимых для обновления базы данных.
- Вы можете использовать сравнение схем или извлечение SqlPackage для импорта изменений из базы данных в набор файлов проекта SQL.
- Вы можете использовать скрипт развертывания SqlPackage или сравнение схем для просмотра инструкций T-SQL, выполняемых для обновления базы данных в соответствии с проектом.
Сравнение схем: визуализация различий
Prerequisites
Сравнение графических схем пока недоступно в предварительной версии проектов SQL в стиле ПАКЕТА SDK в Visual Studio. Используйте Visual Studio Code или Visual Studio для сравнения схем.
Сравнение схем доступно в Visual Studio или с помощью расширения MSSQL для Visual Studio Code.
Сравнение схем доступно в Visual Studio или с помощью расширения MSSQL для Visual Studio Code.
Summary
Сравнение схем предоставляет визуальный интерфейс для понимания различий между базой данных и проектом. Ключевая возможность сравнения схем заключается в том, что направление сравнения является обратимым. В результате можно использовать сравнение схем, чтобы понять изменения из проекта, которые будут развернуты в базе данных или изменения из базы данных для добавления в проект. С помощью схемы можно определить различия в определениях объектов, таких как таблицы, представления, хранимые процедуры и функции.
Полный набор различий или выбранного подмножества можно использовать для применения изменений к базе данных или проекту. Сравнение схем также может создать скрипт развертывания, который при выполнении эффективно применяет изменения к базе данных.
Дополнительные сведения о сравнении схем см. в обзоре сравнения схем.
Публикация отчета: рассмотрение изменений
Для развертывания отчетов требуется интерфейс командной строки SqlPackage.
dotnet tool install -g Microsoft.SqlPackage
Summary
Отчет о развертывании содержит сводку изменений, необходимых для обновления базы данных в соответствии с проектом. Интерфейс командной строки SqlPackage создает отчет развертывания, сравнивая исходную модель (.dacpac артефакт сборки проекта SQL или базу данных) с целевой базой данных. Например, следующая команда создает отчет развертывания для базы данных с именем MyDatabaseMyProjectиз проекта SQL:
dotnet build MyProject.sqlproj
sqlpackage /Action:deployreport /SourceFile:bin/Debug/MyProject.dacpac /TargetConnectionString:{connection string for MyDatabase} /OutputPath:deployreport.xml
Созданный XML-код — это упрощенная форма плана развертывания, сводка операций, которые будут выполняться при запуске развертывания базы данных. Следующий список операций не является исчерпывающим.
CreateAlterDropRefreshUnbindSchemaBindingUnbindFulltextIndexTableDataMotionSPRenameEnableChangeTrackingDatabaseDisableChangeTrackingDatabase
Отчет о развертывании можно просмотреть в текстовом редакторе или в Visual Studio и выглядеть следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<DeploymentReport xmlns="http://schemas.microsoft.com/sqlserver/dac/DeployReport/2012/02">
<Alerts />
<Operations>
<Operation Name="Create">
<Item Value="[CO].[Products].[IX_Products_CategorySlug]" Type="SqlIndex" />
</Operation>
<Operation Name="Alter">
<Item Value="[CO].[Brands]" Type="SqlTable" />
<Item Value="[CO].[AddProductImage]" Type="SqlProcedure" />
</Operation>
<Operation Name="Refresh">
<Item Value="[CO].[SelectStarView]" Type="SqlView" />
</Operation>
</Operations>
</DeploymentReport>
Отчет о развертывании можно использовать для просмотра изменений, а также отслеживания потенциально важных событий, таких как перемещение данных или кластеризованный индекс создания и удаления. Эти события будут перечислены в отчете о развертывании в элементе Alerts .
Преимущество операции XML отчета развертывания заключается в том, что ее можно использовать для автоматизации проверки изменений, необходимых для обновления базы данных. XML можно проанализировать и использовать для создания отчета или активации оповещений на основе указанных операций или имен объектов.
Импорт изменений из базы данных
Как упоминалось в разделе сравнения схем, сравнение схем можно использовать для применения изменений из базы данных в набор файлов проекта SQL. Применение изменений к проекту SQL — это распространенный сценарий, когда у вас есть база данных, которая активно разрабатывается непосредственно, и проект SQL используется для управления объектами базы данных в системе управления версиями. Выполнение этой операции вручную с помощью Visual Studio или Visual Studio Code может занять много времени, особенно если база данных имеет множество объектов или нерегулярных изменений. В этом разделе мы рассмотрим, как автоматизировать извлечение определений объектов из базы данных в набор файлов проекта SQL.
Prerequisites
Благодаря автоматизации мы используем интерфейс командной строки SqlPackage для извлечения определений объектов из базы данных в набор файлов проекта SQL. Шаблоны .NET Microsoft.Build.Sql.Templates используются для создания файла проекта SQL; это необязательный шаг.
- Пакет SDK для .NET 8
- Интерфейс командной строки SqlPackage
- Шаблоны .NET для Microsoft.Build.Sql.Templates
# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage
# install Microsoft.Build.Sql.Templates
dotnet new install Microsoft.Build.Sql.Templates
Summary
Команда извлечения SqlPackage принимает исходную базу данных и создает выходную модель базы данных в виде файла или в виде .dacpac набора скриптов SQL.
SqlPackage по умолчанию создает .dacpac файл, но /p:ExtractTarget= это свойство можно использовать для указания набора скриптов SQL. Следующая команда извлекает базу данных MyDatabase в файл проекта SQL, заданный в папке MyDatabaseProject:
sqlpackage /Action:Extract /SourceConnectionString:{connection string for MyDatabase} /TargetFile:MyDatabaseProject /p:ExtractTarget=SchemaObjectType
Если папка находится под управлением системой контроля версий, то определения извлеченных объектов будут показывать различия в инструментах контроля версий. С помощью SqlPackage для создания файлов и проверки различий в системе управления версиями можно автоматизировать процесс импорта изменений из базы данных в набор файлов проекта SQL.
В серии трех команд можно удалить предыдущий набор файлов, извлечь базу данных и проверить различия в инструментах управления версиями:
rm -rf MyDatabaseProject
sqlpackage /Action:Extract /SourceConnectionString:{connection string for MyDatabase} /TargetFile:MyDatabaseProject /p:ExtractTarget=SchemaObjectType
git status --porcelain | wc -l
Выходные данные — это количество файлов, которые были изменены последним извлечением SqlPackage. Выходные данные команды git status можно использовать для запуска других шагов автоматизации. Если мы хотим использовать этот набор файлов в качестве проекта SQL, мы можем использовать шаблоны Microsoft.Build.Sql.Templates .NET для создания файла проекта SQL в папке MyDatabaseProject:
dotnet new sqlproj -n MyDatabaseProject -o MyDatabaseProject
Проверка сценариев развертывания T-SQL
Как упоминалось в разделе сравнения схем, сравнение схем можно использовать для создания скриптов T-SQL, необходимых для обновления базы данных для сопоставления проекта SQL. В этом разделе мы рассмотрим, как использовать SqlPackage для автоматизации создания скриптов T-SQL, необходимых для обновления базы данных в соответствии с проектом SQL, таким образом, что их можно хранить в качестве артефакта конвейера для проверки и утверждения.
Prerequisites
dotnet tool install -g Microsoft.SqlPackage
Summary
При выполнении развертывания SQL-проекта с помощью SqlPackage используется действие publish, но если мы хотим проанализировать выполняемые скрипты T-SQL, мы можем использовать действие script. Следующая команда создает скрипты T-SQL, необходимые для обновления базы данных с именем MyDatabase для соответствия SQL проекту с именем MyProject.
dotnet build MyProject.sqlproj
sqlpackage /Action:Script /SourceFile:bin/Debug/MyProject.dacpac /TargetConnectionString:{connection string for MyDatabase} /DeployScriptPath:Deployment.sql