快速入门:将 BACPAC 文件导入 Azure SQL 数据库中的数据库

可以使用 BACPAC 文件将 SQL Server 数据库导入 Azure SQL 数据库中的数据库。 可以从 Azure Blob 存储(仅限标准存储)中存储的 BACPAC 文件或从本地位置中的本地存储导入数据。 若要通过提供更多且更快的资源将导入速度最大化,请在导入过程中将数据库扩展到更高的服务层和更大的计算大小。 然后,可以在导入成功后进行缩减。

Note

导入的数据库的兼容性级别基于源数据库的兼容性级别。

Important

导入数据库后,可选择以当前兼容级别(对于 AdventureWorks2008R2 数据库是级别 100)或更高级别操作数据库。 有关在特定兼容级别操作数据库的影响和选项的详细信息,请参阅 ALTER DATABASE Compatibility Level(更改数据库兼容级别)。 有关与兼容级别相关的其他数据库级别设置的信息,另请参阅 ALTER DATABASE SCOPED CONFIGURATION(更改数据库范围的配置)。

在 Azure 门户中从 BACPAC 文件导入

Azure 门户仅支持在 Azure SQL 数据库中创建单个数据库,并且仅从存储在 Azure Blob 存储中的 BACPAC 文件中创建。

  1. 若要使用 Azure 门户从 BACPAC 文件导入新的单个数据库,请打开相应的数据库服务器页面,然后在工具栏上选择“导入数据库”。

    数据库 import1

  2. 选择存储帐户和 BACPAC 文件的容器,然后选择要从中导入的 BACPAC 文件。

  3. 指定新数据库大小(通常与源数据库相同)并提供目标 SQL Server 凭据。 如需新 Azure SQL 数据库的可能值的列表,请参阅创建数据库

    数据库 import2

  4. 单击 “确定”

  5. 若要监视导入的进度,请打开数据库的服务器页,然后在“设置”下,选择“导入/导出历史记录”。 成功导入后,状态为“已完成”。

    数据库导入状态

  6. 若要验证数据库在数据库服务器上是否处于活动状态,请选择“SQL 数据库”并验证新数据库是否为“联机”。

使用 SqlPackage 从 BACPAC 文件导入

若要使用 SqlPackage 命令行实用程序导入 SQL Server 数据库,请参阅导入参数和属性。 SqlPackage 具有最新的 SQL Server Management StudioSQL Server Data Tools for Visual Studio。 还可以从 Microsoft 下载中心下载最新的 SqlPackage

在大多数生产环境中,建议使用 SqlPackage 而不是 Azure 门户来实现缩放和性能。 有关 SQL Server 客户咨询团队使用 BACPAC 文件进行迁移的博客,请参阅使用 BACPAC 文件从 SQL Server 迁移到 Azure SQL 数据库

以下 SqlPackage 命令可将 AdventureWorks2008R2 数据库从本地存储导入到名为 mynewserver20170403 的 Azure SQL 数据库服务器。 它将创建名为 myMigratedDatabase 的新数据库,其中包含高级服务层和 P6 服务目标。 根据你的环境更改这些值。

SqlPackage.exe /a:import /tcs:"Data Source=mynewserver20170403.database.chinacloudapi.cn;Initial Catalog=myMigratedDatabase;User Id=<your_server_admin_account_user_id>;Password=<your_server_admin_account_password>" /sf:AdventureWorks2008R2.bacpac /p:DatabaseEdition=Premium /p:DatabaseServiceObjective=P6

Important

若要从公司防火墙后连接到管理单一数据库的 SQL 数据库服务器,该防火墙必须打开端口 1433。

此示例演示如何通过 Active Directory 通用身份验证,使用 SqlPackage 来导入数据库。

SqlPackage.exe /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.chinacloudapi.cn /ua:True /tid:"apptest.partner.onmschina.cn"

使用 PowerShell 从 BACPAC 文件导入单个数据库

Note

本文进行了更新,以便使用新的 Azure PowerShell Az 模块。 若要详细了解新的 Az 模块和 AzureRM 兼容性,请参阅新 Azure Powershell Az 模块简介。 有关安装说明,请参阅安装 Azure PowerShell

Important

PowerShell Azure 资源管理器模块仍受 Azure SQL 数据库的支持,但所有未来的开发都是针对 Az.Sql 模块的。 若要了解这些 cmdlet,请参阅 AzureRM.Sql。 Az 模块和 AzureRm 模块中的命令参数大体上是相同的。

使用 New-AzSqlDatabaseImport cmdlet 向 Azure SQL 数据库服务提交导入数据库请求。 根据数据库大小,导入操作可能需要一些时间才能完成。

$importRequest = New-AzSqlDatabaseImport 
   -ResourceGroupName "<your_resource_group>" `
   -ServerName "<your_server>" `
   -DatabaseName "<your_database>" `
   -DatabaseMaxSizeBytes "<database_size_in_bytes>" `
   -StorageKeyType "StorageAccessKey" `
   -StorageKey $(Get-AzStorageAccountKey -ResourceGroupName "<your_resource_group>" -StorageAccountName "<your_storage_account").Value[0] `
   -StorageUri "https://myStorageAccount.blob.core.chinacloudapi.cn/importsample/sample.bacpac" `
   -Edition "Standard" `
   -ServiceObjectiveName "P6" `
   -AdministratorLogin "<your_server_admin_account_user_id>" `
   -AdministratorLoginPassword $(ConvertTo-SecureString -String "<your_server_admin_account_password>" -AsPlainText -Force)

可以使用 Get-AzSqlDatabaseImportExportStatus cmdlet 检查导入的进度。 如果在提交请求后立即运行此 cmdlet,通常会返回“状态: 正在进行”。 显示“状态: 成功”时,表示导入完毕。

$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

Tip

有关另一个脚本示例,请参阅从 BACPAC 文件导入数据库

限制

不支持导入到弹性池中的数据库。 可以将数据导入到单一数据库,然后将数据库移到弹性池。

使用向导导入

还可以使用以下向导。

后续步骤