Проверка пакета приложения уровня данных
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Перед развертыванием пакета приложения уровня данных рекомендуется просмотреть его содержимое и проверить действия по обновлению перед обновлением существующего пакета приложения уровня данных. Тем более это истина для развертывания пакетов, которые ранее в организации не развертывались.
Ниже перечислены методы обновления пакета DAC:
- Просмотр содержимого приложения уровня данных
- Просмотр изменений базы данных
- Просмотр действий по обновлению
- Сравнение dacs
Ненадежные пакеты DAC
Рекомендуется не выполнять развертывание пакетов DAC, полученных из неизвестных или ненадежных источников. Такие daCs могут содержать вредоносный код, который может выполнять непреднамеренный код Transact-SQL или вызвать ошибки, изменив схему. Прежде чем использовать DAC из неизвестного или ненадежного источника, разверните его в изолированном тестовом экземпляре ядро СУБД, запустите DBCC CHECKDB (Transact-SQL) в базе данных, а также изучите код, например хранимые процедуры или другой определяемый пользователем код в базе данных.
Просмотр содержимого приложения уровня данных
Существует два механизма просмотра содержимого пакета приложения уровня данных:
- импорт пакета DAC в проект SQL в средствах разработчика SQL Server
- публикация пакета DAC в тестовом экземпляре
Импорт приложения уровня данных в средства разработчика SQL Server
Откройте меню Файл, выберите Создать, затем Проект....
Выберите шаблон проекта SQL Server и укажите Имя, Расположениеи Имя решения.
В Обозреватель решений щелкните правой кнопкой мыши узел проекта и выберите "Свойства...".
На вкладке Параметры проекта в разделе Типы вывода установите флажок Приложение уровня данных (файл с расширением DACPAC) и закройте диалоговое окно свойств.
В Обозреватель решений щелкните правой кнопкой мыши узел проекта и выберите импорт приложения уровня данных....
Используйте Обозреватель решений , чтобы открыть любые файлы в приложении уровня данных, например политику выбора сервера, а также скрипты, выполняемые до и после развертывания.
Используйте Представление схемы , чтобы просмотреть все объекты, составляющие схему, обращая особое внимание на код таких объектов, как функции или хранимые процедуры.
Публикация пакета DAC в тестовом экземпляре
Несколько средств доступны для публикации пакета DAC в тестовом экземпляре. Расширение Dacpac SQL Server для Azure Data Studio содержит мастер приложений уровня данных. Мы рассмотрим публикацию пакета DAC в тестовом экземпляре.
При необходимости разверните тестовый экземпляр с помощью мастера развертывания.
Подключитесь к тестовом экземпляру в Azure Data Studio и щелкните правой кнопкой мыши узел сервера. Выберите мастер приложений уровня данных в контекстном меню.
На шаге 1 мастера выберите "Развернуть dacpac-файл приложения уровня данных" в экземпляре SQL Server
Один шаг 2 мастера, введите расположение файла и выберите новую базу данных для целевой базы данных . Введите имя базы данных.
На шаге 3 мастера просмотрите сводку перед выбором "Развернуть".
После завершения развертывания просмотрите содержимое базы данных в обозревателе объектов.
НЕОБЯЗАТЕЛЬНО. Щелкните правой кнопкой мыши базу данных в обозревателе объектов и выберите "Создать проект из базы данных ", чтобы создать проект SQL из базы данных.
Просмотр изменений базы данных
Непосредственно в связанной базе данных после развертывания текущей версии приложения уровня данных на рабочем сервере могут быть выполнены изменения, конфликтующие со схемой, которая определена в новой версии приложения уровня данных. Прежде чем обновлять приложение уровня данных, проверьте, могут ли изменения, внесенные в базу данных, повлиять на процесс обновления. В нескольких сценариях может потребоваться просмотреть разницу между базой данных и пакетом DAC. Например, изменения могут быть внесены непосредственно в связанную базу данных, которая может конфликтовать с схемой, определенной в новой версии DAC.
Все базы данных
Просмотр изменений базы данных с помощью сравнения схем
С помощью расширения "Сравнение схем" в Azure Data Studio различия в схеме между существующим DACPAC и базой данных или двумя из этих же возможностей можно просматривать в Windows, macOS и Linux.
С помощью sql Server Data Tools в Visual Studio различия в схеме между существующим DACPAC и базой данных или двумя из них можно просмотреть в Windows.
Просмотр изменений базы данных с помощью интерфейса командной строки SqlPackage
Интерфейс командной строки SqlPackage можно использовать с действием DeployReport для просмотра различий между DACPAC и базой данных с помощью действий, которые будут приняты при публикации dacpac в базе данных.
Базы данных, зарегистрированные в качестве приложения уровня данных
Просмотр изменений базы данных с помощью мастера
Запустите мастер обновления приложения уровня данных , указав текущую развернутую версию приложения уровня данных и пакет приложения уровня данных, содержащий новую версию приложения уровня данных.
На странице Обнаружение изменений просмотрите отчет об изменениях, которые были выполнены в базе данных.
Выберите Отмена , если не желаете продолжать обновление.
Дополнительные сведения об использовании мастера см. в разделе Обновление приложения уровня данных.
Просмотр изменений базы данных с помощью PowerShell
Создайте объект SMO Server и задайте его равным экземпляру, содержащему приложение уровня данных, которое требуется просмотреть.
Откройте объект ServerConnection и подключитесь к тому же экземпляру.
Укажите имя приложения уровня данных в переменной.
Используйте метод GetDatabaseChanges() для получения объекта ChangeResults и направьте объект по каналу в текстовый файл, чтобы сформировать простой отчет о новых, удаленных и измененных объектах.
В следующем примере отображаются все изменения базы данных, внесенные в развернутый DAC с именем MyApplication.
## Set a SMO Server object to the default instance on the local computer.
CD SQLSERVER:\SQL\localhost\DEFAULT
$srv = get-item .
## Open a Common.ServerConnection to the same instance.
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)
$serverconnection.Connect()
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)
## Specify the DAC instance name.
$dacName = "MyApplication"
## Generate the change list and save to file.
$dacChanges = $dacstore.GetDatabaseChanges($dacName) | Out-File -Filepath C:\DACScripts\MyApplicationChanges.txt
Просмотр изменений базы данных с помощью интерфейса командной строки SqlPackage
Интерфейс командной строки SqlPackage можно использовать с действием DriftReport для просмотра изменений, внесенных в базу данных с момента последней регистрации.
Просмотр действий по обновлению
Все базы данных
Просмотр изменений базы данных с помощью публикации проекта SQL
Используя расширение База данных SQL Projects в Azure Data Studio, действия, которые будут выполняться при публикации проекта SQL в базе данных, можно просматривать в Windows, macOS и Linux, выбрав "Создать скрипт" во время публикации.
С помощью sql Server Data Tools в Visual Studio действия, выполняемые при публикации проекта SQL в базе данных, можно просматривать в Windows как скрипт развертывания.
Просмотр действий по обновлению с помощью интерфейса командной строки SqlPackage с помощью интерфейса командной строки SqlPackage можно использовать с действием DeployReport для просмотра различий между dacpac и базой данных с помощью действий, которые будут приняты при публикации dacpac в базе данных.
Базы данных, зарегистрированные в качестве приложения уровня данных
Прежде чем использовать новую версию пакета DAC для обновления уровня данных, развернутого из более раннего пакета DAC, можно создать отчет, содержащий инструкции Transact-SQL, которые будут выполняться во время обновления, а затем просмотреть инструкции.
Создание отчетов об обновлениях с помощью мастера
Запустите мастер обновления приложения уровня данных , указав текущую развернутую версию приложения уровня данных и пакет приложения уровня данных, содержащий новую версию приложения уровня данных.
На странице Сводка просмотрите отчет о действиях обновления.
Выберите Отмена , если не желаете продолжать обновление.
Дополнительные сведения об использовании мастера см. в разделе Обновление приложения уровня данных.
Действия обновления отчета с помощью PowerShell
Создайте объект SMO Server и задайте его равным экземпляру, содержащему развернутое приложение уровня данных.
Откройте объект ServerConnection и подключитесь к тому же экземпляру.
Используйте System.IO.File для загрузки файла пакета приложения уровня данных.
Укажите имя приложения уровня данных в переменной.
Используйте метод GetIncrementalUpgradeScript() для получения списка инструкций Transact-SQL, которые будут выполняться при обновлении, и направьте этот список по каналу в текстовый файл.
Закройте файловый поток, используемый для чтения файла пакета приложения уровня данных.
В следующем примере сообщается инструкции Transact-SQL, которые будут выполняться для обновления DAC с именем MyApplication до схемы, определенной в файле MyApplication2017.dacpac.
## Set a SMO Server object to the default instance on the local computer.
CD SQLSERVER:\SQL\localhost\DEFAULT
$srv = get-item .
## Open a Common.ServerConnection to the same instance.
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)
$serverconnection.Connect()
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)
## Load the DAC package file.
$dacpacPath = "C:\MyDACs\MyApplication2017.dacpac"
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)
## Specify the DAC instance name.
$dacName = "MyApplication"
## Generate the upgrade script and save to file.
$dacstore.GetIncrementalUpgradeScript($dacName, $dacType) | Out-File -Filepath C:\DACScripts\MyApplicationUpgrade.sql
## Close the filestream to the new DAC package.
$fileStream.Close()
сравнение приложений уровня данных
Перед обновлением приложения уровня данных рекомендуется проанализировать различия в базе данных и объектах уровня экземпляра между текущим и новым приложениями уровня данных. В случае отсутствия копии пакета действующего приложения уровня данных его можно извлечь из текущей базы данных.
Если импортировать оба пакета приложений уровня данных в проекты приложений уровня данных в средствах разработчика SQL Server, то для анализа различий между ними станет возможным использовать средство «Сравнение схем».
Можно также распаковать приложения уровня данных в отдельные папки. После этого проанализировать различия можно будет с помощью средства поиска отличий, например программы WinDiff.
См. также
Приложения уровня данных
Развертывание приложения уровня данных
Обновление приложения уровня данных