Обновление приложения уровня данных

Используйте мастер обновления приложений уровня данных или скрипт Windows PowerShell, чтобы изменить схему и свойства приложения уровня данных (DAC), развернутого на данный момент, для соответствия схеме и свойствам, заданным в новой версии приложений уровня данных.

  • Перед началом работы выполните следующие действия. Выбор параметров обновления DAC, Ограничения, Предварительные требования, Безопасность, Разрешения

  • Обновление приложения уровня данных с использованием следующих средств: Мастер обновления приложения уровня данных, PowerShell

Перед началом работы

Обновление приложения уровня данных — это процесс, который выполняется на месте и изменяет схему существующей базы для соответствия схеме, заданной в новой версии приложения уровня данных. Новая версия приложения уровня данных содержится в файле пакета приложения уровня данных. Дополнительные сведения о создании пакета DAC см. в разделе Приложения уровня данных.

Выбор параметров обновления приложения уровня данных

Для обновления на месте существует четыре варианта:

  • Пропускать потерю данных ― если этот параметр равен True, обновление продолжится, даже если некоторые операции приведут к потере данных. если этот параметр равен False, обновление прекращается при обнаружении таких операций. Например, если какая-то таблица текущей базы данных отсутствует в схеме нового приложения уровня данных и этот параметр равен True, такая таблица будет удалена. Значение по умолчанию равно True.

  • Блокировать изменения ― если этот параметр равен True, обновление будет прекращено, если схема базы данных отличается от схемы, заданной в предыдущей версии приложения уровня данных. Если этот параметр равен False, обновление продолжится даже в случае обнаружения изменений. Значение по умолчанию равно False.

  • Откат при сбое ― если этот параметр равен True, обновление оформляется в виде транзакции, а в случае сбоя делается попытка отката изменений. Если этот параметр равен False, все изменения фиксируются по мере внесения, а в случае сбоя придется восстанавливать предыдущую версию базы данных с резервной копии. Значение по умолчанию равно False.

  • Пропуск проверки политики ― если этот параметр равен True, проверка политики выбора сервера DAC не производится. Если этот параметр равен False, проверка политики производится, а в случае обнаружения несоответствия обновление прекращается. Значение по умолчанию равно False.

[В начало]

Ограничения

Обновление приложений уровня данных возможно только в База данных SQL или SQL Server 2005 с пакетом управления 4 (SP4) или более поздних версий.

[В начало]

Предварительные требования

Перед началом обновления рекомендуется сделать полную резервную копию базы данных. Если при обновлении возникнет ошибка и откатить все изменения не удастся, может потребоваться восстановление с резервной копии.

Прежде чем начинать обновление, необходимо выполнить некоторые шаги для проверки пакета DAC и действий обновления. Дополнительные сведения о том, как выполнить эти проверки, см. в разделе Проверка пакета приложения уровня данных.

  • Рекомендуется не выполнять обновление с помощью пакета приложения уровня данных, полученного из неизвестных или ненадежных источников. Эти пакеты могут содержать вредоносный код, который может выполнить непредусмотренный код Transact-SQL или вызвать ошибки, изменив схему. Прежде чем использовать пакет из неизвестного или ненадежного источника, распакуйте приложение уровня данных и проверьте такой код, как хранимые процедуры или другой пользовательский код.

  • Если в действующую базу данных вносились изменения после развертывания последней версии приложения уровня данных, некоторые такие изменения могут помешать успешному обновлению или будут удалены при обновлении. Сначала следует создать и проанализировать отчет обо всех изменениях, внесенных в базу данных.

  • Рекомендуется создать список изменений схемы, которые будут внесены при обновлении, и проанализировать его на предмет возможных проблем.

Имя приложения в пакете приложения уровня данных должно быть таким же, как и имя приложения развернутого приложения уровня данных. Например, если имя текущего приложения уровня данных — GeneralLedger, то обновить его можно только с помощью пакета приложения уровня данных с именем приложения GeneralLedger.

Проверить, что в журнале транзакций достаточно места для регистрации всех изменений.

[В начало]

Безопасность

Для повышения безопасности имена входа, использующие проверку подлинности SQL Server, хранятся в пакете DAC без пароля. При развертывании или обновлении пакета имя входа создается как отключенное имя входа с созданным паролем. Чтобы включить имена входа, войдите в систему под учетной записью, имеющей разрешение ALTER ANY LOGIN и с помощью команды ALTER LOGIN включите имя входа и присвойте ему новый пароль, который можно передать пользователю. Это не требуется для имен входа, использующих проверку подлинности Windows, поскольку SQL Server не управляет их паролями.

[В начало]

Разрешения

Обновление DAC может проводиться только членами стандартных ролей сервера sysadmin или serveradmin, либо членами стандартной роли сервера dbcreator с правами доступа ALTER ANY LOGIN. Имя входа должно быть владельцем существующей базы данных. Встроенная учетная запись администратора системы SQL Server с именем sa также может обновлять приложение уровня данных.

[В начало]

Использование мастера обновления приложения уровня данных

Обновление приложения уровня данных с помощью мастера

  1. В Обозревателе объектов разверните узел экземпляра с приложением уровня данных, которое требуется обновить.

  2. Разверните узел Управление, а затем узел Приложения уровня данных.

  3. Щелкните правой кнопкой мыши узел с обновляемым приложением уровня данных и выберите Обновить приложение уровня данных…

  4. Выполните шаги в диалоговых окнах мастера.

    1. Вводная страница

    2. Страница «Выбор пакета»

    3. Страница «Просмотр политики»

    4. Страница «Обнаружение изменений»

    5. Анализ плана обновления

    6. Страница «Сводка»

    7. Страница «Обновление DAC»

Вводная страница

На этой странице описаны шаги обновления приложения уровня данных.

Больше не показывать эту страницу. — щелкните этот флажок, чтобы предотвратить отображение этой страницы в будущем.

Далее > — переход на страницу Выбор пакета.

Отмена — работа мастера завершается без обновления DAC.

[мастер обновления]

Страница «Выбор пакета»

На этой странице указывается пакет приложения уровня данных, содержащий новую версию приложения уровня данных. Страница проходит через два состояния.

[мастер обновления]

Выбор пакета DAC

Чтобы выбрать пакет DAC для развертывания, воспользуйтесь первоначальным состоянием страницы. Пакет DAC должен представлять собой работоспособный файл пакета DAC с расширением DACPAC. Имя приложения уровня данных в пакете приложения уровня данных должно быть таким же, как и имя текущего приложения уровня данных.

Пакет приложения уровня данных — укажите путь и имя файла пакета приложения уровня данных, содержащего новую версию приложения уровня данных. Чтобы указать расположение пакета DAC, можно нажать кнопку Обзор в правой части окна.

Имя приложения — доступное только для чтения текстовое поле, в котором отображается имя приложения уровня данных, присвоенное при создании приложения уровня данных или извлечении из базы данных.

Версия — доступное только для чтения поле, в котором отображается версия, присвоенная пакету DAC при создании или извлечении из базы данных.

Описание — доступное только для чтения поле, в котором отображается описание, сделанное при создании или извлечении пакета DAC из базы данных.

< Назад — возврат к странице Введение.

Далее > — отображается индикатор выполнения, когда мастер подтверждает, что выбранный файл является исправным пакетом DAC.

Отмена — работа мастера завершается без обновления DAC.

[мастер обновления]

Проверка пакета DAC

Отображается индикатор выполнения, когда мастер подтверждает, что выбранный файл является исправным пакетом DAC. Если выполняется проверка пакета приложения уровня данных, то мастер перейдет на страницу Просмотр политики. Если файл не является допустимым пакетом DAC, мастер остается на странице Выбор пакета DAC. Выберите другой исправный пакет DAC, либо выйдите из мастера и создайте новый пакет DAC.

Проверка содержимого DAC — индикатор выполнения, отражающий текущее состояние процесса выполнения.

< Назад — возврат к первоначальному состоянию страницы Выбор пакета.

Далее > — переход к окончательной версии страницы Выбор пакета.

Отмена — мастер прекращает работу без развертывания DAC.

[мастер обновления]

Страница «Просмотр политики»

На этой странице можно просмотреть результаты проверки политики выбора на сервере DAC, если у DAC есть политика. Политика выбора сервера приложения уровня данных не является обязательной, она назначается приложению уровня данных, созданному в среде Microsoft Visual Studio. Политика с помощью аспектов политики выбора серверов задает условия, которым экземпляр компонента Компонент Database Engine должен соответствовать, чтобы на нем можно было размещать DAC.

Результаты проверки условий политики — доступный только для чтения отчет, показывающий, успешно ли прошла оценка условий в политике выбора сервера приложения уровня данных. Результаты проверки каждого из условий выводятся отдельной строкой.

Пропустить нарушения политики — установите этот флажок, чтобы приступить к обновлению, если не удалось соблюсти одно или несколько условий политики. Этот параметр следует выбирать только при уверенности, что ни одно из невыполненных условий не будет препятствовать успешной работе DAC.

< Назад — возврат на страницу Выбор пакета.

Далее > — переход на страницу Обнаружение изменений.

Отмена — работа мастера завершается без обновления DAC.

[мастер обновления]

Страница «Обнаружение изменений»

На этой странице отображаются результаты проверки изменений в базе данных, выполненной мастером. Это изменения, из-за которых схема базы данных отличается от определения схемы, которое хранится в метаданных приложения DAC в базе данных msdb. Например, если после развертывания исходного приложения уровня данных с помощью инструкций CREATE, ALTER или DROP выполнялось добавление, изменение или удаление объектов из базы данных. Сначала на этой странице отображается индикатор выполнения, а затем результаты анализа.

Выполняется обнаружение изменений, это может занять несколько минут — отображает индикатор выполнения во время проверки мастером различий между текущей схемой базы данных и объектами из определения приложения уровня данных.

Результаты обнаружения изменений — указывается, что анализ завершен, а его результаты приводятся ниже.

База данных «ИмяБазыДанных» не изменилась — мастер не обнаружил отличий объектов, определенных в базе данных и их копий из определения приложения уровня данных.

База данных «ИмяБазыДанных» изменилась — мастер обнаружил отличия между объектами из базы данных и их копиями из определения приложения уровня данных.

Продолжить, несмотря на возможные потери изменений — указывает, что пользователь понимает, что некоторые объекты или данные из текущей базы данных не будут перенесены в новую базу данных, но все равно хочет продолжить обновление. Эту кнопку следует нажимать только после анализа отчета об изменениях, понимая, какие действия необходимо выполнить, чтобы вручную передать объекты или данные, которые потребуются в новой базе данных. Если такой уверенности нет, нажмите кнопку Сохранить отчет, чтобы сохранить отчет об изменениях, а затем нажмите кнопку Отмена. Проанализируйте отчет, запланируйте перенос необходимых объектов и данных после завершения обновления, а затем повторно запустите мастер.

Сохранить отчет — нажмите эту кнопку, чтобы сохранить отчет об изменениях, обнаруженных мастером, между объектами из базы данных и их копиями из определения приложения уровня данных. Отчет можно будет проанализировать, чтобы определить, потребуются ли дополнительные действия после завершения обновления для внесения некоторых или всех объектов, приведенных в отчете, в новую базу данных.

< Назад — возврат на страницу Выбор пакета DAC.

Далее > — переход на страницу Параметры.

Отмена — мастер прекращает работу без развертывания DAC.

[мастер обновления]

Страницы параметров

Используйте эту страницу, чтобы выбрать для обновления параметр отката при сбое.

Откат при сбое — выберите этот параметр, чтобы заключить обновление в транзакцию, которую в случае сбоя мастер может попытаться откатить. Дополнительные сведения об этом параметре см. в разделе Выбор параметров обновления DAC.

Восстановить значения по умолчанию — параметр возвращается к значению по умолчанию (false).

< Назад — возврат к странице Обнаружение изменений.

Далее > — переход на страницу Анализ плана обновления.

Отмена — мастер прекращает работу без развертывания DAC.

[мастер обновления]

Просмотр страницы «План обновления»

На этой странице можно увидеть, какие действия будут выполнены в процессе обновления. Продолжайте только в случае, если уверены, что обновление не вызовет проблем.

Следующие действия будут использоваться для обновления приложения уровня данных. — Просмотрите отображенные сведения для проверки правильности произведенных действий. В столбце Действие показаны все действия, которые будут выполняться для обновления (например, инструкции Transact-SQL). Столбец Потеря данных будет содержать предупреждение, если соответствующее действие может вызвать удаление данных.

Обновить — обновляет список действий.

Сохранить отчет действия — сохраняет содержимое окна действия в виде HTML-файла.

Продолжить, несмотря на возможные потери изменений — указывает, что пользователь понимает, что некоторые объекты или данные из текущей базы данных не будут перенесены в новую базу данных, но все равно хочет продолжить обновление. Эту кнопку следует нажимать только после анализа отчета об изменениях, понимая, какие действия необходимо выполнить, чтобы вручную передать объекты или данные, которые потребуются в новой базе данных. Если вы не уверены, нажмите кнопку Сохранить отчет действия, чтобы сохранить отчет о выполнении, а затем кнопку Сохранить скрипты, чтобы сохранить скрипт Transact-SQL. После этого нажмите кнопку Отмена. Проанализируйте отчет и скрипт, запланируйте перенос необходимых объектов и данных после завершения обновления, а затем повторно запустите мастер.

Сохранить скрипты — сохраняет инструкции Transact-SQL, которые будут выполнены для обновления, в текстовом файле.

Восстановить значения по умолчанию — параметр возвращается к значению по умолчанию (false).

< Назад — возврат к странице Обнаружение изменений.

Далее > — переход на страницу Сводка.

Отмена — мастер прекращает работу без развертывания DAC.

[мастер обновления]

Страница «Сводка»

Используйте эту страницу для окончательного анализа действий, которые мастер выполнит для обновления приложения уровня данных.

Следующие параметры будут использоваться для обновления приложения уровня данных. — Просмотрите отображенные сведения для проверки правильности произведенных действий. В этом окне отображается выбранное для обновления приложение уровня данных и пакет приложения уровня данных, содержащий новую версию приложения уровня данных. В нем также отображается, совпадает ли текущая версия базы данных с текущим определением приложения уровня данных или она изменилась.

< Назад — переход на страницу Анализ плана обновления.

Далее> — развертывание приложения уровня данных и отображение результатов на странице Обновление приложения уровня данных.

Отмена — мастер прекращает работу без развертывания DAC.

[мастер обновления]

Страница «Обновление DAC»

Эта страница сообщает об успешном или неуспешном завершении операции обновления.

Обновление приложения уровня данных — сообщает об успехе или неуспехе каждого действия, предпринятого для обновления приложения уровня данных. Просмотрите эти сведения, чтобы выяснить результаты каждого действия. Для каждого действия, в котором обнаружена ошибка, предусмотрена ссылка в столбце Результат. Выберите эту ссылку, чтобы просмотреть отчет об ошибках, относящихся данному действию.

Сохранить отчет — сохранение отчета об обновлении в HTML-файле. В этом файле содержится отчет о состоянии каждого из действий, в том числе все выданные сообщения об ошибках. Папка по умолчанию используется SQL Server Management Studio\DAC Packages, вложенная в папки Documents рабочего каталога учетной записи пользователя Windows.

Готово — завершает работу мастера.

[мастер обновления]

Использование PowerShell

Обновление приложения уровня данных с помощью метода IncrementalUpgrade() в скрипте PowerShell

  1. Создайте объект SMO Server и задайте его экземпляру с приложением уровня данных, которое должно быть обновлено.

  2. Откройте объект ServerConnection и подключитесь к тому же экземпляру.

  3. Используйте System.IO.File для загрузки файла пакета приложения уровня данных.

  4. Используйте add_DacActionStarted и add_DacActionFinished для подписки на обновление событий приложения уровня данных.

  5. Задайте DacUpgradeOptions.

  6. Для обновления приложения уровня данных используйте метод IncrementalUpgrade.

  7. Закройте файловый поток, используемый для чтения файла пакета приложения уровня данных.

[В начало]

Пример (PowerShell)

В следующем примере приложение уровня данных MyApplication обновляется на экземпляре Компонент Database Engine по умолчанию с использованием новой версии в пакете MyApplication.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\MyApplicationVNext.dacpac"
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)

## Subscribe to the DAC upgrade events.
$dacstore.add_DacActionStarted({Write-Host `n`nStarting at $(get-date) :: $_.Description})
$dacstore.add_DacActionFinished({Write-Host Completed at $(get-date) :: $_.Description})

## Upgrade the DAC and close the package.
$dacName  = "MyApplication"

## Set the upgrade options.
$upgradeProperties = New-Object Microsoft.SqlServer.Management.Dac.DacUpgradeOptions
$upgradeProperties.blockonchanges = $true
$upgradeProperties.ignoredataloss = $false
$upgradeProperties.rollbackonfailure = $true
$ upgradeProperties.skippolicyvalidation = $false

## Upgrade the DAC
$dacstore.IncrementalUpgrade($dacName, $dacType, $upgradeProperties)
## Close the package file.
$fileStream.Close()

[В начало]

См. также

Основные понятия

Приложения уровня данных

SQL Server PowerShell