Краткое руководство. Импорт bacpac-файла в базу данных в База данных SQL Azure или Управляемый экземпляр SQL Azure

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

Базу данных SQL Server можно импортировать в База данных SQL Azure или Управляемый экземпляр SQL с помощью BACPAC-файла. Вы можете импортировать данные из bacpac-файла, хранящегося в хранилище BLOB-объектов Azure (только для хранилища уровня "Стандартный") или из локального хранилища в локальном расположении. Чтобы развернуть скорость импорта, предоставив дополнительные ресурсы и ускоренную скорость доступа к ним, масштабируйте базу данных до более высокого уровня службы и объема вычислительных ресурсов во время процесса импорта. После завершения импорта эти значения можно уменьшить.

Примечание.

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

Использование портала Azure

Просмотрите это видео, чтобы узнать, как импортировать из bacpac-файла в портал Azure или продолжить чтение:

Портал Azure only поддерживает создание одной базы данных в База данных SQL Azure и только из bacpac-файла, хранящегося в хранилище BLOB-объектов Azure.

Чтобы перенести базу данных в Управляемый экземпляр SQL Azure из bacpac-файла, используйте SQL Server Management Studio или SQLPackage, используя портал Azure или Azure PowerShell в настоящее время не поддерживается.

Примечание.

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

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

    Screenshot of the Azure portal, logical server overview page, with database import selected.

  2. Выберите "Выбрать резервную копию". Выберите учетную запись хранения, в которой размещена база данных, а затем выберите bacpac-файл, из которого необходимо импортировать.

  3. Укажите размер новой базы данных (обычно он такой же, как и у источника) и учетные данные для целевого сервера SQL Server. Список значений, доступных для новой базы данных в Базе данных SQL Azure, см. в статье CREATE DATABASE.

    Screenshot of the Azure portal, Database import page.

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

  5. Чтобы отслеживать ход выполнения импорта, откройте страницу сервера базы данных. В разделе Параметры выберите Журнал импорта и экспорта. При успешном выполнении импорта отображается состояние Завершено.

    Screenshot of the Azure portal, server overview page, showing the database import status.

  6. Выберите Базы данных SQL, чтобы проверить активность базы данных на сервере, и убедитесь, что для новой базы данных задано состояние В сети.

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

Импорт базы данных SQL Server с помощью программы командной строки SqlPackage описывается в разделе Параметры и свойства импорта. Вы можете скачать последнюю версию SqlPackage для Windows, macOS или Linux.

Вместо портала Azure рекомендуется использовать SqlPackage для масштабирования и обеспечения производительности в большинстве рабочих сред. Сведения о миграции из SQL Server в Базу данных SQL Azure с помощью файлов BACPAC см. в блоге команды Помощника по Azure для пользователей SQL Server здесь.

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

Следующая команда SqlPackage импортирует AdventureWorks2008R2 базу данных из локального хранилища в логический SQL-сервер с именем mynewserver20170403. Она создает новую базу данных, вызываемую myMigratedDatabase с уровнем служб Premium и целевой задачей службы P6 . Подставьте соответствующие значения для своей среды.

SqlPackage /a:import /tcs:"Data Source=<serverName>.database.windows.net;Initial Catalog=<migratedDatabase>;User Id=<userId>;Password=<password>" /sf:AdventureWorks2008R2.bacpac /p:DatabaseEdition=Premium /p:DatabaseServiceObjective=P6

Важно!

Чтобы подключиться к серверу Базы данных SQL Azure через корпоративный брандмауэр, следует открыть порт 1433 в этом брандмауэре. Чтобы подключиться к Управляемому экземпляру SQL, требуется подключение типа "точка — сеть" или подключение Express Route.

В качестве альтернативы имени пользователя и пароля можно использовать идентификатор Microsoft Entra (ранее — Azure Active Directory). В настоящее время служба импорт и экспорт не поддерживает проверку подлинности идентификатора Microsoft Entra ID, если требуется MFA. Замените параметры имени пользователя и пароля для /ua:true и /tid:"yourdomain.onmicrosoft.com". В этом примере показано, как импортировать базу данных с помощью SqlPackage с проверкой подлинности Microsoft Entra:

SqlPackage /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /ua:True /tid:"apptest.onmicrosoft.com"

Azure Data Studio

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

С помощью PowerShell

Примечание.

Управляемый экземпляр SQL Azure в настоящее время не поддерживает перенос базы данных в базу данных экземпляра из bacpac-файла с помощью Azure PowerShell. Чтобы импортировать в управляемый экземпляр SQL, используйте SQL Server Management Studio или SQLPackage.

Примечание.

Компьютеры, обрабатывающие запросы на импорт и экспорт, отправленные через портал или PowerShell, должны хранить не только BACPAC-файл, но и временные файлы, созданные платформой приложения уровня данных (DacFX). Необходимое место на диске значительно зависит от DOB-объектов с одинаковым размером и может занять до трех раз размера базы данных. Компьютеры, на которых выполняется запрос на импорт или экспорт, располагают только 450 ГБ пространства на локальном диске. В результате некоторые запросы могут завершиться ошибкой "Недостаточно места на диске". В этом случае обходным решением является запуск SqlPackage на компьютере с достаточным объемом локального дискового пространства. При импорте или экспорте баз данных, размер которых превышает 150 ГБ, используйте SqlPackage, чтобы избежать этой проблемы.

Важно!

Модуль PowerShell Azure Resource Manager по-прежнему поддерживается, но вся будущая разработка сосредоточена на модуле Az.Sql. Исправления ошибок для модуля AzureRM будут продолжать выпускаться как минимум до декабря 2020 г. Аргументы команд в модулях Az и AzureRm практически идентичны. Дополнительные сведения о совместимости см. в статье Знакомство с новым модулем Az для Azure PowerShell.

Используйте командлет New-AzSqlDatabaseImport, чтобы отправить запрос на импорт базы данных в Azure. В зависимости от размера базы данных импорт может занять некоторое время. Модель подготовки на основе DTU поддерживает выбор значений максимального размера базы данных для каждого уровня. При импорте базы данных используйте одно из этих поддерживаемых значений.

$importRequest = New-AzSqlDatabaseImport -ResourceGroupName "<resourceGroupName>" `
    -ServerName "<serverName>" -DatabaseName "<databaseName>" `
    -DatabaseMaxSizeBytes "<databaseSizeInBytes>" -StorageKeyType "StorageAccessKey" `
    -StorageKey $(Get-AzStorageAccountKey `
        -ResourceGroupName "<resourceGroupName>" -StorageAccountName "<storageAccountName>").Value[0] `
        -StorageUri "https://myStorageAccount.blob.core.windows.net/importsample/sample.bacpac" `
        -Edition "Premium" -ServiceObjectiveName "P6" `
        -AdministratorLogin "<userId>" `
        -AdministratorLoginPassword $(ConvertTo-SecureString -String "<password>" -AsPlainText -Force)

Чтобы проверить ход выполнения импорта, используйте командлет Get-AzSqlDatabaseImportExportStatus. Если выполнить его немедленно после запроса, то обычно возвращается сообщение Status: InProgress. Импорт считается завершенным, когда вы увидите состояние Status: Succeeded.

$importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink

[Console]::Write("Importing")
while ($importStatus.Status -eq "InProgress") {
    $importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
    [Console]::Write(".")
    Start-Sleep -s 10
}

[Console]::WriteLine("")
$importStatus

Совет

Еще один пример сценария приведен в разделе Импорт базы данных из BACPAC-файла.

Отмена запроса на импорт

Используйте apiотмены или команду Stop-AzSqlDatabaseActivity PowerShell, как показано в следующем примере:

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

Разрешения, необходимые для отмены импорта

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

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

Уровень совместимости новой базы данных

  • Уровень совместимости импортированной базы данных основан на уровне совместимости базы данных-источника.
  • После импорта базы данных можно использовать базу данных на текущем уровне совместимости или на более высоком уровне. Дополнительные сведения о последствиях и параметрах работы базы данных с определенным уровнем совместимости см. в разделе ALTER DATABASE (Transact-SQL) Compatibility Level (Уровень совместимости ALTER DATABASE (Transact-SQL)). Дополнительные сведения о других параметрах уровня базы данных, связанных с уровнями совместимости, см. в разделе ALTER DATABASE SCOPED CONFIGURATION .

Ограничения

  • Импорт базы данных в эластичный пул не поддерживается. Однако вы можете сначала выполнить импорт данных в отдельную базу данных, а затем переместить эту базу данных в эластичный пул.
  • Служба импорта и экспорта не работает, если параметр "Разрешить доступ к службам Azure" отключен. Однако проблему можно обойти вручную, выполнив sqlPackage из виртуальной машины Azure или выполнив экспорт непосредственно в коде с помощью API DacFx.
  • При импорте нельзя указать уровень избыточности для хранилища резервных копий, если вы создаете новую базу данных. Она всегда создается с избыточностью по умолчанию как геоизбыточное хранилище резервных копий. Чтобы обойтись, сначала создайте пустую базу данных с требуемой избыточностью хранилища резервных копий с помощью портал Azure или PowerShell, а затем импортируйте bacpac в эту пустую базу данных.
  • Хранилище за брандмауэром сейчас не поддерживается.
  • Во время импорта не создавайте базу данных с тем же именем. Процесс импорта создает новую базу данных указанного имени.
  • В настоящее время служба импорт и экспорт не поддерживает проверку подлинности идентификатора Microsoft Entra ID, если требуется MFA.
  • Службы Import\Export поддерживают только проверку подлинности SQL и идентификатор Microsoft Entra. Импорт\Экспорт несовместим с регистрацией приложения удостоверений Майкрософт.

Дополнительные средства

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