你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

从已删除的工作区还原专用 SQL 池

本文介绍如何在意外删除工作区后,使用 PowerShell 在 Azure Synapse Analytics 中还原专用 SQL 池。

注意

本指南仅适用于Azure Synapse工作区中的专用 SQL 池。 对于独立专用 SQL 池(以前称为“SQL DW”),请按照从已删除的服务器还原 SQL 池中的指导进行操作。

开始之前

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 若要开始,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

从已删除的工作区还原 SQL 池

以下示例脚本将完成以下步骤:

  1. 打开 PowerShell

  2. 连接到 Azure 帐户。

  3. 将上下文设置为包含已删除工作区的订阅。

  4. 确定删除工作区的日期时间。 此步骤将检索删除工作区 SQL 池的确切日期和时间。

    • 此步骤假定具有相同名称资源组和相同值的工作区仍然可用。
    • 否则,请使用相同的工作区名称、资源组名称、区域以及之前删除的工作区中的所有相同值重新创建删除的工作区。
  5. 构造一个字符串,作为要恢复的 sql 池的资源 ID。 其格式需要采用 Microsoft.Sql。 其中包括删除服务器的日期和时间。

  6. 从已删除的工作区还原数据库。 使用源 SQL 池还原到目标工作区。

  7. 验证已恢复数据库的状态是否为“联机”。

    $SubscriptionID = "<YourSubscriptionID>"
    $ResourceGroupName = "<YourResourceGroupName>"
    $WorkspaceName = "<YourWorkspaceNameWithoutURLSuffixSeeNote>"  # Without sql.azuresynapse.net
    $DatabaseName = "<YourDatabaseName>"
    $TargetResourceGroupName = "<YourTargetResourceGroupName>"
    $TargetWorkspaceName = "<YourtargetServerNameWithoutURLSuffixSeeNote>"
    $TargetDatabaseName = "<YourDatabaseName>"
    
    Connect-AzAccount
    Set-AzContext -SubscriptionID $SubscriptionID
    
    # Get the exact date and time the workspace SQL pool was dropped.
    # This assumes that the workspace with the same name resource group and same values is still available.
    # If not, recreate the dropped workspace with the same workspace name, resource group name, region, 
    # and all the same values from prior dropped workspace.
    # There should only be one selection to select from.
    $paramsGetDroppedSqlPool = @{
        ResourceGroupName = $ResourceGroupName
        WorkspaceName     = $WorkspaceName
        Name              = $DatabaseName
    }
    $DroppedDateTime = Get-AzSynapseDroppedSqlPool @paramsGetDroppedSqlPool `
        | Select-Object -ExpandProperty DeletionDate
    
    # Construct a string of the resource ID of the sql pool you wish to recover.
    # The format requires Microsoft.Sql. This includes the approximate date time the server was dropped.
    $SourceDatabaseID = "/subscriptions/$SubscriptionID/resourceGroups/$ResourceGroupName/providers/" `
                    + "Microsoft.Sql/servers/$WorkspaceName/databases/$DatabaseName"    
    
    # Restore to the target workspace with the source SQL pool.
    $paramsRestoreSqlPool = @{
        FromDroppedSqlPool  = $true
        DeletionDate        = $DroppedDateTime
        TargetSqlPoolName   = $TargetDatabaseName
        ResourceGroupName   = $TargetResourceGroupName
        WorkspaceName       = $TargetWorkspaceName
        ResourceId          = $SourceDatabaseID
    }
    $RestoredDatabase = Restore-AzSynapseSqlPool @paramsRestoreSqlPool
    
    # Verify the status of restored database
    $RestoredDatabase.status
    

疑难解答

如果收到“处理请求时出现意外错误”消息,则表明原始工作区可能因存续期较短而没有任何可用的恢复点。 通常,如果工作区存在不到一小时,则会发生这种情况。