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

Извлечение пакета приложения уровня данных из существующей базы данных SQL Server можно с помощью мастера извлечения приложения уровня данных или скрипта Windows PowerShell. В результате извлечения будет создан файл пакета DAC, содержащий определения объектов базы данных и связанные элементы уровня экземпляра. Например, файл пакета DAC содержит все таблицы базы данных, хранимые процедуры, представления, пользователей и имена входа, сопоставленные с пользователями базы данных.

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

  • Способ извлечения приложения уровня данных Мастер извлечения приложения уровня данных, PowerShell

Перед началом

Предусмотрена возможность извлечения приложения уровня данных из баз данных, находящихся на экземплярах База данных SQL или SQL Server 2000 с пакетом обновления 4 (SP4) или более поздних версий. Если процесс извлечения запущен для базы данных, которая была развернута из приложения уровня данных, то происходит извлечение только определений объектов в базе данных. Этот процесс не ссылается на приложение уровня данных, зарегистрированное в msdb (master в База данных SQL). Процесс извлечения не регистрирует определение приложения уровня данных в текущем экземпляре компонента Database Engine. Дополнительные сведения о регистрации приложения уровня данных см. в разделе Регистрация базы данных в качестве приложения уровня данных.

Ограничения

Приложение уровня данных может быть извлечено только из базы данных в База данных SQL, либо в SQL Server 2005 с пакетом обновления 4 (SP4) и более поздних версиях. Извлечь приложение уровня данных нельзя, если в базе данных имеются объекты, не поддерживаемые в приложении уровня данных, или содержащиеся пользователи. Дополнительные сведения о типах объектов, поддерживаемых в DAC, см. в разделе Поддержка приложений уровня данных для объектов и версий SQL Server.

[В начало]

Разрешения

Чтобы извлечь DAC, необходимы по крайней мере разрешение ALTER ANY LOGIN и разрешение VIEW DEFINITION на уровне базы данных, а также разрешения SELECT для представления каталога sys.sql_expression_dependencies. Извлечение DAC может выполняться членами предопределенной роли сервера securityadmin, которые также обладают правами предопределенной роли базы данных database_owner в базе данных, из которой извлекается DAC. Приложения уровня данных могут также извлекать члены предопределенной роли сервера sysadmin или встроенной учетной записи системного администратора SQL Server с именем sa.

[В начало]

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

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

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

  2. Разверните узел Базы данных.

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

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

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

    2. Страница выбора данных

    3. Страница «Задание свойств»

    4. Страница «Проверка и сводка»

    5. Страница построения пакета

[В начало]

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

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

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

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

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

[Мастер извлечения]

Страница выбора данных

На этой странице мастера можно выбрать эталонные данные, которые нужно включить в файл пакета приложения уровня данных (пакет DAC). Включать данные в пакет DAC не обязательно. Пакет DAC уже включает схему всех поддерживаемых объектов базы данных и объекты экземпляров, связанные с базой данных.

В файл пакета DAC можно включать до 10 МБ эталонных данных. Однако таблицы, включаемые в пакет DAC, не должны содержать типы данных больших двоичных объектов (BLOB), такие как image или varchar(max). Чтобы извлечь данные большего объема для передачи в другую базу данных, используйте службы SQL Server Integration Services, программу массового копирования или один из многих других методов переноса данных.

Таблица базы данных — установите флажок рядом для тех таблиц в базе данных, где находятся данные, которые необходимо включить в пакет приложения уровня данных. Можно выбрать до десяти таблиц, число строк в которых не превышает 10 000.

[Мастер извлечения]

Страница «Задание свойств»

Эта страница мастера содержит описание приложения уровня данных (DAC). Данные свойства используются для определения DAC и помогают отличать его от других приложений.

Имя — имя приложения уровня данных. Оно может отличаться от имени файла пакета DAC и должно описывать приложение. Например, если база данных используется для финансового приложения, то можно назвать ее «Финансы DAC».

Версия (в формате xx.xx.xx.xx, где x — цифра) — числовое значение, которое указывает версию приложения уровня данных. Версия DAC используется в среде Visual Studio для определения версии DAC, над которой работают разработчики. При развертывании DAC версия сохраняется в базе данных msdb и впоследствии доступна в узле Приложения уровня данных в среде Среда SQL Server Management Studio.

Описание. — необязательно. Описывает DAC. При развертывании DAC версия сохраняется в базе данных msdb и впоследствии доступна в узле Приложения уровня данных в среде Среда Management Studio.

Сохранить файл пакета DAC (включить имя файла с расширением DACPAC): — сохраняет приложение уровня данных в файле пакета приложения уровня данных с расширением DACPAC. Нажмите кнопку Обзор, чтобы задать имя и выбрать местоположение файла.

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

[Мастер извлечения]

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

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

ПримечаниеПримечание

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

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

  • объекты, успешно включенные в DAC: эти объекты и их зависимости поддерживаются и могут быть включены в DAC;

  • объекты, включенные в DAC с предупреждениями: эти объекты поддерживаются, но зависят от других объектов, которые не поддерживаются DAC;

  • объекты, не включенные в DAC: эти объекты не поддерживаются, и перед извлечением DAC их необходимо удалить из базы данных.

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

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

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

[Мастер извлечения]

Страница построения пакета

Эта страница позволяет наблюдать за ходом выполнения мастером извлечения приложения уровня данных.

Действие — во время выполнения действия Создать и сохранить файл пакета приложения уровня данных мастер извлекает приложение уровня данных из базы данных SQL Server. Затем пакет DAC создается в памяти и сохраняется в заданном местоположении. Перейдите по ссылке в столбце Результат, чтобы просмотреть результат выполнения соответствующего шага.

Сохранить отчет — щелкните, чтобы сохранить результаты работы мастера в файле.

Готово — закрыть мастер после завершения обработки или возникновения ошибки.

[Мастер извлечения]

Извлечение пакета DAC с помощью PowerShell

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

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

  2. Добавьте переменную, указывающую имя базы данных.

  3. Укажите метаданные для приложения уровня данных, такие как имя, версия и описание приложения уровня данных.

  4. Укажите путь и имя файла извлеченного пакета DAC.

  5. Запустите метод Extract, передав ему вышеперечисленные данные.

[В начало]

Пример (PowerShell)

В следующем примере показано, как извлечь приложение уровня данных MyApplication из базы данных MyDB.

## Set a SMO Server object to the default instance on the local computer.
CD SQLSERVER:\SQL\localhost\DEFAULT
$srv = get-item .

## Specify the database to extract to a DAC.
$dbname = "MyDB"

## Specify the DAC metadata.
$applicationname = "MyApplication"
$version = "1.0.0.0"
$description = "This DAC defines the database used by my application."

## Specify the location and name for the extracted DAC package.
$dacpacPath = "C:\MyDACs\MyApplication.dacpac"

## Extract the DAC.
$extractionunit = New-Object Microsoft.SqlServer.Management.Dac.DacExtractionUnit($srv, $dbname, $applicationname, $version)
$extractionunit.Description = $description
$extractionunit.Extract($dacpacPath)

[В начало]

См. также

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

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