다음을 통해 공유

使用专用链接导入或导出 Azure SQL 数据库

适用于:Azure SQL 数据库

本文介绍如何在 Azure 门户或 Azure PowerShell 中使用专用链接导入或导出 Azure SQL 数据库,并将 Azure SQL 逻辑服务器上的“允许访问 Azure 服务”设为关闭

运行导入或导出要求将 “允许访问 Azure 服务 ”设置为 “打开”,否则导入或导出作将失败并出现错误。

注意

使用专用链接导入/导出 Azure SQL 数据库的功能目前以预览版提供。

数据库导入/导出专用链接是由Microsoft创建的由服务管理的专用终结点。 启用后,专用链接专门用于数据库导入/导出过程、Azure SQL 数据库和相关 Azure 存储服务的所有通信。 服务托管的专用终结点是特定虚拟网络和子网中的专用 IP 地址。

必须在单独的步骤中为 Azure SQL 逻辑服务器和 Azure Blob 存储帐户手动批准专用终结点,本教程中包括详细信息。

“导入/导出专用链接”体系结构的屏幕截图。

可以通过 Azure 门户、PowerShell 或使用 REST API 配置导入/导出专用链接。

需要启用和批准导入专用链接。 在 Azure 中创建专用链接是自动完成的。

  1. 转到要在其中导入数据库的 Azure SQL 逻辑服务器的“概述”页。 从工具栏中选择“导入数据库”。

  2. 在“导入数据库”页中,选中“使用专用链接”选项复选框。

  3. 输入存储帐户、身份验证凭据、数据库详细信息,然后选择“确定”。

需要启用和批准导出专用链接。 在 Azure 中创建专用链接是自动完成的。

  1. 转到要导出的 Azure SQL 数据库的“概述”页。 从工具栏中选择“导出”。
  2. 在“导出数据库”页中,选中“使用专用链接”选项复选框。
  3. 输入存储帐户、身份验证凭据、数据库详细信息,然后选择“确定”。

新的专用终结点必须由专用链接中心或 Azure SQL 数据库中的用户批准,或者可以在各自的 Azure 门户位置单独批准这两个专用链接。

  1. 在 Azure 门户中导航到专用链接中心。 在 Azure 搜索框中,搜索“专用链接”。 选择 专用链接

  2. 在专用链接中心,选择 延迟的连接

  3. 选择使用导入/导出服务创建的两个专用终结点。 选择批准

    Azure 门户的专用链接中心的屏幕截图,其中显示了如何批准这两个专用链接。

选项 2:在 Azure 门户中单独批准专用终结点连接

  1. 转到托管数据库的 Azure SQL 逻辑服务器。

  2. 在“安全”下的“资源”菜单中,选择 网络

  3. 选择“专用访问”选项卡。

  4. 专用终结点连接下的列表中,选择使用导入/导出服务创建的专用终结点。

  5. 选择批准

    Azure 门户的屏幕截图,其中显示了如何批准 Azure SQL 数据库专用链接。

  6. 转到托管了包含 BACPAC (.bacpac) 文件的 Blob 容器的存储帐户。

  7. 安全 + 网络下,选择 网络

  8. 选择 专用终结点连接 选项卡。

  9. 在列表中,选择导入/导出服务的专用终结点。

  10. 选择“批准”以批准连接。

    Azure 门户的屏幕截图,其中显示了如何批准 Azure 存储中的 Azure 存储专用链接。

3.检查导入/导出状态

  1. 在 Azure SQL 服务器和 Azure 存储帐户中批准专用终结点后,将启动数据库导入或导出作业。 在此之前,这些作业处于暂停状态。

  2. 可以在“Azure SQL Server”页的“数据管理”部分下的“导入/导出历史记录”页中检查数据库导入或导出作业的状态。

    Azure 门户的屏幕截图,其中显示了如何检查导入/导出作业状态。

使用 New-AzSqlDatabaseImport cmdlet 向 Azure 提交导入数据库请求。 根据数据库大小,导入操作可能需要一些时间才能完成。 基于 DTU 的预配模型支持为每个层选择数据库最大大小值。 导入数据库时,使用 Azure SQL 数据库支持的版本和服务目标值。

在以下 PowerShell 代码示例中提供自己的 <values>,该示例导入名为 sample.bacpac 的 .bacpac 文件,并创建包含 2 个常规用途 vCore 的 Azure SQL 数据库。

$importRequestParams = @{
   ResourceGroupName                      = "<resourceGroupName>"
   ServerName                             = "<serverName>"
   DatabaseName                           = "<databaseName>"
   DatabaseMaxSizeBytes                   = "<databaseSizeInBytes>"
   StorageKeyType                         = "StorageAccessKey"
   StorageKey                             = $(Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -StorageAccountName "<storageAccountName>").Value[0]
   StorageUri                             = "https://myStorageAccount.blob.core.chinacloudapi.cn/importsample/sample.bacpac"
   Edition                                = "GeneralPurpose"
   ServiceObjectiveName                   = "GP_Gen5_2"
   UseNetworkIsolation                    = $true
   StorageAccountResourceIdForPrivateLink = "/subscriptions/<subscriptionId>/resourceGroups/<resource_group_name>/providers/Microsoft.Storage/storageAccounts/<storage_account_name>"
   SqlServerResourceIdForPrivateLink      = "/subscriptions/<subscriptionId>/resourceGroups/<resource_group_name>/providers/Microsoft.Sql/servers/<server_name>"
   AdministratorLogin                     = "<userID>"
   AdministratorLoginPassword             = $(ConvertTo-SecureString -String "<password>" -AsPlainText -Force)
}

$importRequest = New-AzSqlDatabaseImport @importRequestParams

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

在以下 PowerShell 代码示例中提供自己的 <values>

$exportRequestParams = @{
   ResourceGroupName                      = "<resourceGroupName>"
   ServerName                             = "<serverName>"
   DatabaseName                           = "<databaseName>"
   StorageKeyType                         = "StorageAccessKey"
   StorageKey                             = $(Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -StorageAccountName "<storageAccountName>").Value[0]
   StorageUri                             = "https://myStorageAccount.blob.core.chinacloudapi.cn/importsample/sample.bacpac"
   UseNetworkIsolation                    = $true
   StorageAccountResourceIdForPrivateLink = "/subscriptions/<subscriptionId>/resourceGroups/<resource_group_name>/providers/Microsoft.Storage/storageAccounts/<storage_account_name>"
   SqlServerResourceIdForPrivateLink      = "/subscriptions/<subscriptionId>/resourceGroups/<resource_group_name>/providers/Microsoft.Sql/servers/<server_name>"
   AdministratorLogin                     = "<userID>"
   AdministratorLoginPassword             = $(ConvertTo-SecureString -String "<password>" -AsPlainText -Force)
}

$exportRequest = New-AzSqlDatabaseExport @exportRequestParams

用于执行导入和导出作业的现有 API 支持专用链接。 请参阅 导入数据库 API

限制

目前,用于导入/导出的专用链接具有以下限制:

  • 目前不支持使用 PowerShell 从 Azure SQL 托管实例导入或导出数据库。

  • 当用户数据库或 Azure 存储帐户受资源锁保护时,不应使用导入/导出专用链接。

  • 需要手动批准新的专用终结点连接才能完成导出操作。 开始导出后,转到专用链接中心的“挂起的连接”并批准连接,这可能需要几分钟才能显示。

  • 使用专用链接导入不支持在创建新数据库时指定备份存储冗余,而是使用默认的异地冗余备份存储来创建。 解决方法是首先使用 Azure 门户或 PowerShell 和所需的备份存储冗余创建一个空数据库,然后将 BACPAC 文件导入这个空数据库。

  • 结合使用专用链接和 REST API 的导入操作只能对现有数据库执行,因为 API 使用数据库扩展名。 解决方法是创建一个具有所需名称的空数据库,然后使用专用链接调用导入 REST API。