还原现有专用 SQL 池(以前称为 SQL DW)

本文介绍如何通过 Azure 门户和 PowerShell 还原现有专用 SQL 池(之前称为 SQL DW)。

注意

本指南仅适用于独立专用 SQL 池(以前称为 SQL DW)。 有关 Azure Synapse Analytics 工作区中的专用 SQL 池,请参阅还原现有专用 SQL 池

开始之前

  1. 验证 DTU 容量。 每个池都由一个具有默认 DTU 配额的逻辑 SQL 服务器(例如 myserver.database.chinacloudapi.cn)托管。 验证该服务器的剩余 DTU 配额是否足够进行数据库还原。

  2. 确保安装 Azure PowerShell

    注意

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

  3. 有一个现有的还原点,需要从该点进行还原。 若要创建新的还原,请参阅教程:新建用户定义的还原点

通过 PowerShell 还原现有专用 SQL 池(之前称为 SQL DW)

若要从还原点还原现有专用 SQL 池(之前称为 SQL DW),请使用 Restore-AzSqlDatabase PowerShell cmdlet。

  1. 打开 PowerShell。

  2. 连接到 Azure 帐户,并列出与帐户关联的所有订阅。

  3. 选择包含要还原的数据库的订阅。

  4. 列出专用 SQL 池(之前称为 SQL DW)的还原点。

  5. 使用 RestorePointCreationDate 选取所需的还原点。

  6. 使用 Restore-AzSqlDatabase PowerShell cmdlet 将专用 SQL 池(之前称为 SQL DW)还原到所需还原点。

    1. 若要将专用 SQL 池(以前称为 SQL DW)还原到另一服务器,请确保指定其他服务器名称。 该服务器也可以位于另一资源组和区域中。
    2. 若要还原到其他订阅,请参阅以下部分
  7. 验证已还原的专用 SQL 池(之前称为 SQL DW)是否处于联机状态。

  8. 完成还原后,即可按在恢复后配置数据库中的说明配置恢复的专用 SQL 池(之前称为 SQL DW)。


$SubscriptionName="<YourSubscriptionName>"
$ResourceGroupName="<YourResourceGroupName>"
$ServerName="<YourServerNameWithoutURLSuffixSeeNote>"  # Without database.chinacloudapi.cn
#$TargetResourceGroupName="<YourTargetResourceGroupName>" # uncomment to restore to a different server.
#$TargetServerName="<YourtargetServerNameWithoutURLSuffixSeeNote>"  
$DatabaseName="<YourDatabaseName>"
$NewDatabaseName="<YourDatabaseName>"

Connect-AzAccount -Environment AzureChinaCloud
Get-AzSubscription
Select-AzSubscription -SubscriptionName $SubscriptionName

# Or list all restore points
Get-AzSqlDatabaseRestorePoint -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName

# Get the specific database to restore
$Database = Get-AzSqlDatabase -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName

# Pick desired restore point using RestorePointCreationDate "xx/xx/xxxx xx:xx:xx xx"
$PointInTime="<RestorePointCreationDate>"

# Restore database from a restore point
$RestoredDatabase = Restore-AzSqlDatabase –FromPointInTimeBackup –PointInTime $PointInTime -ResourceGroupName $Database.ResourceGroupName -ServerName $Database.ServerName -TargetDatabaseName $NewDatabaseName –ResourceId $Database.ResourceID

# Use the following command to restore to a different server
#$TargetResourceGroupName = $Database.ResourceGroupName # for restoring to different server in same resourcegroup 
#$RestoredDatabase = Restore-AzSqlDatabase –FromPointInTimeBackup –PointInTime $PointInTime -ResourceGroupName $TargetResourceGroupName -ServerName $TargetServerName -TargetDatabaseName $NewDatabaseName –ResourceId $Database.ResourceID

# Verify the status of restored database
$RestoredDatabase.status

通过 Azure 门户还原现有专用 SQL 池(之前称为 SQL DW)

  1. 登录到 Azure 门户

  2. 导航到要从其进行还原的专用 SQL 池。

  3. 在“概述”页的顶部,选择“还原”。

    Screenshot from the Azure portal, the Overview page navigation bar of a SQL pool, the Restore button is highlighted.

  4. 选择“自动还原点”或“用户定义的还原点”。 如果专用 SQL 池(之前称为 SQL DW)没有任何自动还原点,请等待数小时或创建一个用户定义的还原点,然后再进行还原。 对于用户定义的还原点,请选择一个现有的,或者创建一个新的。 对于“服务器”,可以选取另一资源组和区域中的服务器,也可以创建一个新服务器。 在提供所有参数后,请选择“查看 + 还原”。

    Screenshot from the dedicated SQL pool Restore page of the Azure portal. For Restore point type, the radio button for User-defined restore points is selected.

通过 PowerShell 将现有的专用 SQL 池(以前称为 SQL DW)还原到其他订阅

这是用于还原现有专用 SQL 池的类似指南,但从以下说明中可以看到,应该在原始订阅中执行 Get-AzSqlDatabase PowerShell cmdlet,而 Restore-AzSqlDatabase PowerShell cmdlet 则应在目标订阅中执行。 执行还原的用户必须在源订阅和目标订阅中拥有适当的权限。

  1. 打开 PowerShell。

  2. 如果使用的是较旧版本,请使用 Update-Module 将 Az.Sql 模块更新为 3.8.0(或更高版本)。 否则,它将导致失败。 若要使用 PowerShell 验证版本,请执行以下操作:

    foreach ($i in (get-module -ListAvailable | ?{$_.name -eq 'az.sql'}).Version) { $version = [string]$i.Major + "." + [string]$i.Minor; if ($version -gt 3.7) {write-host "Az.Sql version $version installed. Prequisite met."} else {update-module az.sql} }
    
  3. 连接到 Azure 帐户,并列出与帐户关联的所有订阅。

  4. 选择包含要还原的数据库的订阅。

  5. 列出专用 SQL 池(之前称为 SQL DW)的还原点。

  6. 使用 RestorePointCreationDate 选取所需的还原点。

  7. 选择应在其中还原数据库的目标订阅。

  8. 使用 Restore-AzSqlDatabase PowerShell cmdlet 将专用 SQL 池(之前称为 SQL DW)还原到所需还原点。

  9. 验证已还原的专用 SQL 池(之前称为 SQL DW)是否处于联机状态。

$SourceSubscriptionName="<YourSubscriptionName>"
$SourceResourceGroupName="<YourResourceGroupName>"
$SourceServerName="<YourServerNameWithoutURLSuffixSeeNote>"  # Without database.chinacloudapi.cn
$SourceDatabaseName="<YourDatabaseName>"
$TargetSubscriptionName="<YourTargetSubscriptionName>"
$TargetResourceGroupName="<YourTargetResourceGroupName>"
$TargetServerName="<YourTargetServerNameWithoutURLSuffixSeeNote>"  # Without database.chinacloudapi.cn
$TargetDatabaseName="<YourDatabaseName>"

# Update Az.Sql module to the latest version (3.8.0 or above)
# Update-Module -Name Az.Sql -RequiredVersion 3.8.0

Connect-AzAccount -Environment AzureChinaCloud
Get-AzSubscription
Select-AzSubscription -SubscriptionName $SourceSubscriptionName

# Pick desired restore point using RestorePointCreationDate "xx/xx/xxxx xx:xx:xx xx"
$PointInTime="<RestorePointCreationDate>"
# Or list all restore points
Get-AzSqlDatabaseRestorePoint -ResourceGroupName $SourceResourceGroupName -ServerName $SourceServerName -DatabaseName $SourceDatabaseName

# Get the specific database to restore
$Database = Get-AzSqlDatabase -ResourceGroupName $SourceResourceGroupName -ServerName $SourceServerName -DatabaseName $SourceDatabaseName

# Switch context to the destination subscription
Select-AzSubscription -SubscriptionName $TargetSubscriptionName

# Restore database from a desired restore point of the source database to the target server in the desired subscription
$RestoredDatabase = Restore-AzSqlDatabase –FromPointInTimeBackup –PointInTime $PointInTime -ResourceGroupName $TargetResourceGroupName -ServerName $TargetServerName -TargetDatabaseName $TargetDatabaseName –ResourceId $Database.ResourceID

# Verify the status of restored database
$RestoredDatabase.status