Краткое руководство: Импортирование bacpac-файла в базу данных в Azure SQL Database или Azure SQL Managed Instance
Применимо к: База данных SQL Azure Управляемый экземпляр SQL Azure
Базу данных SQL Server можно импортировать в База данных SQL Azure или Управляемый экземпляр SQL с помощью BACPAC-файла. Вы можете импортировать данные из bacpac-файла, хранящегося в облаке хранилища Azure Blob (только стандартное хранилище) или из локального хранилища на вашей площадке. Чтобы увеличить скорость импорта, предоставив больше и более быстрых ресурсов, масштабируйте базу данных до более высокого уровня обслуживания и размера вычисления во время процесса импорта. После завершения импорта эти значения можно уменьшить.
Примечание.
Импорт и экспорт с помощью Приватного канала находится на этапе предварительной версии.
Использование портала Azure
Просмотрите это видео, чтобы узнать, как импортировать из bacpac-файла в портал Azure или продолжить чтение:
- Портал Azure поддерживает создание только одной базы данных в Azure SQL Database и только из bacpac-файла, который хранится в хранилище BLOB Azure.
- Чтобы перенести базу данных в управляемый экземпляр Azure SQL из bacpac-файла, используйте SQL Server Management Studio или утилиту командной строки
SqlPackage
. Портал Azure и Azure PowerShell в настоящее время не поддерживаются.
Предупреждение
Bacpac-файлы размером более 150 ГБ, созданные из SqlPackage, могут не импортироваться с портала Azure или Azure PowerShell с сообщением об ошибке, которое указывает File contains corrupted data
. Это результат известной проблемы, и обходное решение заключается в том, чтобы использовать SqlPackage
служебную программу командной строки для импорта bacpac-файла. Дополнительные сведения см. в разделе SqlPackage и список проблем.
Примечание.
Компьютеры, обрабатывая запросы на импорт и экспорт, отправленные через портал Azure или PowerShell, должны хранить bacpac-файл, а также временные файлы, созданные платформой приложений уровня данных (DacFX). Требуемое дисковое пространство может быть существенно разным для баз данных одного размера и в три раза превышать размер самой базы данных. Компьютеры, на которых выполняется запрос на импорт или экспорт, располагают только 450 ГБ пространства на локальном диске. В результате некоторые запросы могут завершиться ошибкой There is not enough space on the disk
. В этом случае обходной путь — запустить служебную программу командной строки SqlPackage на компьютере с достаточным объемом места на локальном диске. Мы рекомендуем использовать служебную программу командной строки SqlPackage для импорта и экспорта баз данных размером более 150 ГБ, чтобы избежать этой проблемы.
Чтобы импортировать из bacpac-файла в новую базу данных с помощью портал Azure, откройте соответствующую страницу сервера, а затем на панели инструментов выберите "Импорт базы данных".
Выберите "Выбрать резервную копию". Выберите учетную запись хранения, в которой размещена база данных, а затем выберите bacpac-файл, из которого необходимо импортировать.
Укажите размер новой базы данных (обычно он такой же, как и у источника) и учетные данные для целевого сервера SQL Server. Список значений, доступных для новой базы данных в Базе данных SQL Azure, см. в статье CREATE DATABASE.
Нажмите ОК.
Чтобы отслеживать ход выполнения импорта, откройте страницу сервера базы данных. В разделе Параметры выберите Журнал импорта и экспорта. При успешном выполнении импорта отображается состояние Завершено.
Выберите Базы данных SQL, чтобы проверить активность базы данных на сервере, и убедитесь, что для новой базы данных задано состояние В сети.
Использование SqlPackage
Импорт базы данных SQL Server с помощью программы командной строки SqlPackage описывается в разделе Параметры и свойства импорта. Вы можете скачать последнюю версию SqlPackage для Windows, macOS или Linux.
Вместо портала Azure рекомендуется использовать SqlPackage для масштабирования и обеспечения производительности в большинстве рабочих сред. См. блог Консультативной группы SQL Server для клиентов о миграции с использованием файлов BACPAC
в статье Миграция из SQL Server в базу данных Azure SQL с помощью файлов BACPAC.
Модель подготовки на основе 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, если требуется многофакторная проверка подлинности. Замените параметры имени пользователя и пароля для /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
Примечание.
Управляемый экземпляр Azure SQL в настоящее время не поддерживает миграцию базы данных из bacpac-файла в базу данных этого экземпляра с использованием Azure PowerShell. Чтобы импортировать в управляемый экземпляр SQL, используйте SQL Server Management Studio или SQLPackage.
Примечание.
Компьютеры, обрабатывающие запросы на импорт и экспорт, отправленные через портал или PowerShell, должны хранить не только BACPAC-файл, но и временные файлы, созданные платформой приложения уровня данных (DacFX). Требуемое место на диске значительно различается для баз данных одинакового размера и может составлять до трех размеров базы данных. Компьютеры, на которых выполняется запрос на импорт или экспорт, располагают только 450 ГБ пространства на локальном диске. В результате некоторые запросы могут завершиться ошибкой "Недостаточно места на диске". В этом случае обходным решением является запуск SqlPackage на компьютере с достаточным объемом локального дискового пространства. При импорте или экспорте баз данных, размер которых превышает 150 ГБ, используйте SqlPackage, чтобы избежать этой проблемы.
Внимание
Модуль PowerShell Azure Resource Manager (AzureRM) был снят с поддержки 29 февраля 2024 года. Все будущие разработки должны использовать модуль Az.Sql. Пользователям рекомендуется выполнить миграцию из AzureRM в модуль Az PowerShell, чтобы обеспечить постоянную поддержку и обновления. Модуль AzureRM больше не поддерживается и не обновляется. Аргументы команд в модуле Az PowerShell и в модулях AzureRM существенно идентичны. Дополнительные сведения о совместимости см. в статье Знакомство с новым модулем Az 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, Azure PowerShell или Azure CLI. Вместо этого создайте базу данных в эластичном пуле и используйте sqlPackage Importили импортируйте данные с помощью любого метода в одну базу данных, а затем переместите базу данных в эластичном пуле.
- Служба импорта и экспорта не работает, если параметр "Разрешить доступ к службам Azure" отключен. Однако проблему можно обойти вручную, выполнив sqlPackage из виртуальной машины Azure или выполнив экспорт непосредственно в коде с помощью API DacFx.
- При импорте невозможно указать избыточность резервного хранилища при создании новой базы данных, поэтому она создается с избыточностью по умолчанию, то есть, с геоизбыточным резервным хранилищем. Чтобы обойти ограничение, сначала необходимо создать пустую базу данных с требуемой избыточностью резервного хранилища с помощью портала Azure или PowerShell, а затем импортируйте bacpac в эту пустую базу данных.
- Хранилище за брандмауэром сейчас не поддерживается.
- Во время импорта не создавайте базу данных с тем же именем. Процесс импорта создает новую базу данных указанного имени.
- В настоящее время служба импорта и экспорта не поддерживает проверку подлинности идентификатора Microsoft Entra, если требуется многофакторная проверка подлинности.
- Службы Import\Export поддерживают только проверку подлинности SQL и идентификатор Microsoft Entra. Импорт/Экспорт несовместим с регистрацией приложения Microsoft Identity.
Дополнительные средства
Вы также можете использовать этих мастеров.
- Мастер импорта приложений уровней данных в SQL Server Management Studio.
- мастер импорта и экспорта SQL Server.
Связанный контент
- Чтобы узнать, как подключаться и выполнять запросы к базе данных SQL Azure из Azure Data Studio, см. краткое руководство: использование Azure Data Studio для подключения и выполнения запросов к базе данных SQL Azure.
- Чтобы узнать, как подключиться к базе данных в Базе данных SQL Azure и отправлять к ней запросы, ознакомьтесь со статьей Краткое руководство. Подключение к базе данных SQL Azure и создание запросов к ней с помощью SQL Server Management Studio.
- Блог группы консультантов ПО SQL Server о миграции с помощью BACPAC-файлов см. в статье "Миграция с SQL Server на База данных SQL Azure с помощью BACPAC-файлов".
- Описание процесса миграции базы данных SQL Server в базу данных SQL Azure, включая рекомендации по его использованию, см. в этой статье.
- Чтобы узнать, как безопасно управлять ключами к хранилищу данных и подписанными URL-адресами и совместно их использовать, ознакомьтесь с руководством по безопасности службы хранилища Azure.