Экспорт в файл BACPAC — База данных SQL Azure и Управляемый экземпляр SQL Azure

Применимо к:База данных SQL Azure Управляемый экземпляр SQL Azure

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

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

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

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

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

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

    • Временно повысить объем вычислительных ресурсов.
    • Прекратить все операции чтения и записи во время экспорта.
    • Используйте для всех больших таблиц кластеризованный индекс со значениями, отличными от NULL. Без кластеризованных индексов экспорт может завершиться ошибкой, если он продолжается более 6–12 часов. Это обусловлено тем, что службам экспорта требуется выполнить проверку таблицы, чтобы экспортировать всю таблицу. Хороший способ определить, оптимизированы ли таблицы для экспорта, и DBCC SHOW_STATISTICS убедитесь, что RANGE_HI_KEY не имеет значения NULL, и его значение имеет хорошее распределение. Дополнительную информацию см. в разделе DBCC SHOW_STATISTICS.
  • Для больших баз данных экспорт и импорт BACPAC может занять много времени и может завершиться сбоем по различным причинам.

Примечание.

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

Примечание.

Импорт и экспорт с помощью Приватного канала находится на этапе предварительной версии.

Портал Azure

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

Примечание.

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

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

    Screenshot that highlights the Export button.

  2. Введите имя BACPAC-файла, выберите учетную запись хранения Azure и контейнер для экспорта, а также соответствующие учетные данные для доступа к базе данных-источнику. Для входа администратора SQL Server требуется, даже если вы являетесь администратором Azure, так как администратор Azure не соответствует разрешениям администратора в База данных SQL Azure или Управляемый экземпляр SQL Azure.

    Screenshot shows the Export Database page with username and password specified.

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

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

Служебная программа 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"

Azure Data Studio

Azure Data Studio — это бесплатное средство с открытым исходным кодом и доступно для Windows, Mac и Linux. Расширение "DACPAC SQL Server" предоставляет интерфейс мастера для операций SqlPackage, включая экспорт и импорт. Дополнительные сведения об установке и использовании расширения см . в разделе о расширении dacpac SQL Server.

SQL Server Management Studio (SSMS)

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

PowerShell

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

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

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

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

$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 из раздела Операции с базой данных — отмена или команду Stop-AzSqlDatabaseActivity в PowerShell. Ниже приведен пример команды PowerShell:

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

Примечание.

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

  • Роль участника базы данных SQL или
  • Настраиваемая роль Azure RBAC с разрешением Microsoft.Sql/servers/databases/operations

Ограничения

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