Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: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. Используйте Azure Data Studio или Visual Studio для сравнения схем.
Для сравнения схем требуется графический инструмент, например Visual Studio, или расширение MSSQL для Visual Studio Code.
Summary
Сравнение схем предоставляет визуальный интерфейс для понимания различий между базой данных и проектом. Ключевая возможность сравнения схем заключается в том, что направление сравнения является обратимым. В результате можно использовать сравнение схем, чтобы понять изменения из проекта, которые будут развернуты в базе данных или изменения из базы данных для добавления в проект. С помощью схемы можно определить различия в определениях объектов, таких как таблицы, представления, хранимые процедуры и функции.
Полный набор различий или выбранного подмножества можно использовать для применения изменений к базе данных или проекту. Сравнение схем также может создать скрипт развертывания, который при выполнении эффективно применяет изменения к базе данных.
Дополнительные сведения о сравнении схем см. в обзоре сравнения схем.
Публикация отчета: рассмотрение изменений
Для развертывания отчетов требуется интерфейс командной строки SqlPackage.
dotnet tool install -g Microsoft.SqlPackage
Summary
Отчет о развертывании содержит сводку изменений, необходимых для обновления базы данных в соответствии с проектом. Интерфейс командной строки SqlPackage создает отчет развертывания, сравнивая исходную модель (.dacpac
артефакт сборки проекта SQL или базу данных) с целевой базой данных. Например, следующая команда создает отчет развертывания для базы данных с именем MyDatabase
MyProject
из проекта SQL:
dotnet build MyProject.sqlproj
sqlpackage /Action:deployreport /SourceFile:bin/Debug/MyProject.dacpac /TargetConnectionString:{connection string for MyDatabase} /OutputPath:deployreport.xml
Созданный XML-код — это упрощенная форма плана развертывания, сводка операций, которые будут выполняться при запуске развертывания базы данных. Следующий список операций не является исчерпывающим.
Create
Alter
Drop
Refresh
UnbindSchemaBinding
UnbindFulltextIndex
TableDataMotion
SPRename
EnableChangeTrackingDatabase
DisableChangeTrackingDatabase
Отчет о развертывании можно просмотреть в текстовом редакторе или в 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 или Azure Data Studio может занять много времени, особенно если база данных имеет множество объектов или нерегулярных изменений. В этом разделе мы рассмотрим, как автоматизировать извлечение определений объектов из базы данных в набор файлов проекта SQL.
Prerequisites
Благодаря автоматизации мы используем интерфейс командной строки SqlPackage для извлечения определений объектов из базы данных в набор файлов проекта SQL. Шаблоны .NET Microsoft.Build.Sql.Templates используются для создания файла проекта SQL; это необязательный шаг.
# 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