Поделиться через


Экспорт в BACPAC-файл — Azure SQL Database и Azure SQL Managed Instance

Применимо к:Azure SQL DatabaseAzure SQL Managed Instance

Если нужно экспортировать базу данных для создания архива или для перехода на другую платформу, можно экспортировать схему и данные базы данных в BACPAC-файл. BACPAC-файл — это ZIP-файл с расширением BACPAC, содержащий метаданные и информацию из базы данных. BACPAC-файл можно хранить в Azure Blob-хранилище или в локальном хранилище на локальном сервере, а затем импортировать обратно в Azure SQL Database, Azure SQL Managed Instance или экземпляр SQL Server.

Рекомендации

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

При экспорте в BLOB-хранилище максимальный размер BACPAC-файла составляет 200 ГБ. Чтобы архивировать более крупный BACPAC-файл, экспортируйте в локальное хранилище с помощью SqlPackage.

Импорт или экспорт Azure SQL Database с помощью частного соединения находится на стадии предварительного просмотра.

Имя файла Azure Storage не может заканчиваться . и не может содержать специальные символы, такие как символ пробела или <, >, *, %, &, :, \, /, ?. Имя файла должно быть меньше 128 символов.

Если операция экспорта продолжается более 20 часов, она может быть отменена. Для повышения производительности во время экспорта можно сделать следующее.

  • Временно повысить объем вычислительных ресурсов.

  • Прекратить все операции чтения и записи во время экспорта.

  • Используйте для всех больших таблиц кластеризованный индекс со значениями, отличными от NULL. Без кластеризованных индексов экспорт может неудачно завершиться, если он длится более 6–12 часов. Это обусловлено тем, что службам экспорта требуется выполнить проверку таблицы, чтобы экспортировать всю таблицу. Хороший способ определить, оптимизированы ли таблицы для экспорта, — выполнить DBCC SHOW_STATISTICS и убедиться, что RANGE_HI_KEY не равно null и его значение имеет хорошее распределение. Дополнительные сведения см. в разделе DBCC SHOW_STATISTICS (Transact-SQL).

  • Для больших баз данных экспорт и импорт BACPAC может занять много времени и может завершиться сбоем по различным причинам.

Примечание.

BACPACs не предназначены для операций резервного копирования и восстановления. Azure автоматически создает резервные копии для каждой пользовательской базы данных. Дополнительные сведения см. в статье обзор непрерывности бизнес-процессов и Автоматическое резервное копирование в базе данных Azure SQL или Автоматическое резервное копирование в управляемом экземпляре Azure SQL.

Экспорт с портала Azure

  • Портал Azure можно использовать для экспорта BACPAC базы данных в логический сервер Azure SQL Database.
  • Использование портала Azure в настоящее время не поддерживается для экспорта BACPAC базы данных из Azure SQL Managed Instance.

Примечание.

Компьютеры, обрабатывая запросы на импорт и экспорт, отправленные на портале Azure или PowerShell, должны хранить BACPAC-файл и временные файлы, созданные Data-Tier Application Framework (DacFX). Требуемое дисковое пространство может быть существенно разным для баз данных одного размера и в три раза превышать размер самой базы данных. Компьютеры, на которых выполняется запрос на импорт или экспорт, располагают только 450 ГБ пространства на локальном диске. В результате некоторые запросы могут завершиться ошибкой There is not enough space on the disk. В этом случае обходным решением является запуск SqlPackage на компьютере с достаточным объемом локального дискового пространства. Используйте служебную программу SQLPackage для импорта и экспорта баз данных размером более 150 ГБ, чтобы избежать этой проблемы.

  1. Чтобы экспортировать базу данных с помощью портала Azure, откройте страницу базы данных и выберите Export на панели инструментов.

    Снимок экрана, на котором выделена кнопка «Экспорт».

  2. Укажите имя ФАЙЛА BACPAC, выберите существующую учетную запись хранения Azure и контейнер для экспорта, а затем укажите соответствующие учетные данные для доступа к исходной базе данных. Имя входа администратора SQL Server необходимо, даже если вы являетесь администратором Azure, так как администратор Azure не имеет тех же прав доступа, что и администратор в Azure SQL Database или Azure SQL Managed Instance.

    Снимок экрана: страница экспорта базы данных с указанным именем пользователя и паролем.

  3. Нажмите ОК.

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

Экспорт с помощью аутентификации управляемой идентификации (предварительный просмотр)

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

Подробное руководство см. в разделе "Использование управляемого удостоверения" с импортом и экспортом (предварительная версия).

Для экспорта файла BACPAC с использованием аутентификации управляемой идентификации требуется следующая конфигурация:

  • Управляемое удостоверение, назначенное пользователем (UAMI), назначено логическому серверу для базы данных Azure SQL.
  • Сервер имеет управляемое удостоверение, настроено как администратор Microsoft Entra.
  • Управляемое удостоверение назначается на роль Storage Blob Data Contributor в целевой учетной записи Azure Storage. Это управляемое удостоверение может быть таким же, как назначенное серверу, или другим.
  • Логический сервер, управляемое удостоверение и учетная запись хранения находятся в одном арендаторе Microsoft Entra.

Примечание.

Экспорт с аутентификацией с управляемым удостоверением в настоящее время находится в режиме предварительного просмотра и доступен только для Azure SQL Database.

Служебная программа SQLPackage

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

Экспорт Базы данных SQL с помощью программы командной строки SQLPackage описан в разделе Параметры и свойства операции экспорта. Программа SQLPackage доступна для Windows, macOS и Linux.

В этом примере показано, как экспортировать базу данных с помощью SqlPackage с Active Directory универсальной проверкой подлинности:

SqlPackage /a:Export /tf:testExport.bacpac /scs:"Data Source=apptestserver.database.windows.net;Initial Catalog=MyDB;" /ua:True /tid:"apptest.onmicrosoft.com"

Visual Studio Code

Расширение MSSQL для Visual Studio Code — это бесплатное расширение с открытым кодом, доступное для Windows, macOS и Linux. Расширение включает опыт работы с приложениями уровня данных (предварительная версия) для операций SqlPackage, включая экспорт и импорт. Дополнительные сведения об установке и использовании расширения см. в расширении MSSQL для Visual Studio Code.

SQL Server Management Studio (SSMS)

SQL Server Management Studio предоставляет мастер экспорта базы данных в Azure SQL Database или базу данных SQL Managed Instance в BACPAC-файл. Ознакомьтесь с разделом Export a Data-tier Application (Экспорт приложения уровня данных).

PowerShell

Экспорт BACPAC базы данных из Azure SQL Managed Instance с помощью PowerShell не поддерживается. См. раздел Рекомендации.

Используйте командлет New-AzSqlDatabaseExport для отправки запроса на экспорт базы данных в службу Azure SQL Database. В зависимости от размера базы данных операция экспорта может занять некоторое время.

$exportRequest = New-AzSqlDatabaseExport -ResourceGroupName $ResourceGroupName -ServerName $ServerName `
  -DatabaseName $DatabaseName -StorageKeytype $StorageKeytype -StorageKey $StorageKey -StorageUri $BacpacUri `
  -AdministratorLogin $creds.UserName -AdministratorLoginPassword $creds.Password

Чтобы проверить состояние запроса на экспорт, используйте командлет Get-AzSqlDatabaseImportExportStatus. Если выполнить этот командлет немедленно после запроса, то обычно возвращается сообщение Состояние: выполняется. Отображение сообщения Состояние: выполнен означает, что экспорт завершен.

$exportStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
[Console]::Write("Exporting")
while ($exportStatus.Status -eq "InProgress")
{
    Start-Sleep -s 10
    $exportStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
    [Console]::Write(".")
}
[Console]::WriteLine("")
$exportStatus

Отмена запроса на экспорт

Используйте API Database Operations - Cancel или команду PowerShell Stop-AzSqlDatabaseActivity, чтобы отменить запрос на экспорт. Ниже приведен пример команды PowerShell:

Stop-AzSqlDatabaseActivity -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName -OperationId $Operation.OperationId

Примечание.

Чтобы отменить операцию экспорта, необходимо иметь одну из следующих ролей:

Ограничения

  • Экспорт BACPAC-файла в Azure хранилище класса Premium с помощью методов, рассмотренных в этой статье, не поддерживается.
  • Хранилище за брандмауэром сейчас не поддерживается.
  • Неизменяемое хранилище сейчас не поддерживается.
  • Azure SQL Managed Instance в настоящее время не поддерживает экспорт базы данных в BACPAC-файл с помощью портала Azure или Azure PowerShell. Чтобы экспортировать управляемый экземпляр в BACPAC-файл, используйте SQL Server Management Studio (SSMS) или SQLPackage.
  • В настоящее время служба импорта и экспорта не поддерживает проверку подлинности Microsoft Entra ID при необходимости многофакторной проверки подлинности.
  • Службы Import\Export поддерживают только проверку подлинности SQL и Microsoft Entra ID. Импорт\Экспорт несовместим с регистрацией приложения Microsoft Identity.