适用于:Azure SQL 数据库
此 PowerShell 脚本示例将 SQL 数据库中的数据库还原到特定的时间点。
如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅。
注意
本文使用 Azure Az PowerShell 模块,这是与 Azure 交互时推荐使用的 PowerShell 模块。 若要开始使用 Az PowerShell 模块,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
本教程需要 Az PowerShell 1.4.0 或更高版本。 如果需要进行升级,请参阅 Install Azure PowerShell module(安装 Azure PowerShell 模块)。 此外,还需要运行 Connect-AzAccount -EnvironmentName AzureChinaCloud 以创建与 Azure 的连接。
示例脚本
# Connect-AzAccount -Environment AzureChinaCloud
$subscriptionId = "<Subscription-ID>"
# Set the resource group name and location for your server
$resourceGroupName = "myResourceGroup-$(Get-Random)"
$location = "chinaeast2"
# Set an admin login and password for your server
$adminSqlLogin = "<admin>"
$password = "<password>"
# Set server name - the logical server name has to be unique in the system
$serverName = "server-$(Get-Random)"
# The sample database name
$databaseName = "mySampleDatabase"
# The restored database names
$pointInTimeRestoreDatabaseName = "MySampleDatabase_10MinutesAgo"
# The IP address range that you want to allow to access your server
$startIp = "0.0.0.0"
$endIp = "0.0.0.0"
# Set subscription
Set-AzContext -SubscriptionId $subscriptionId
# Create a resource group
$resourceGroup = New-AzResourceGroup -Name $resourceGroupName -Location $location
$adminCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminSqlLogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force)
# Create a server with a system-wide unique server name
$serverParams = @{
ResourceGroupName = $resourceGroupName
ServerName = $serverName
Location = $location
SqlAdministratorCredentials = $adminCredential
}
$server = New-AzSqlServer @serverParams
# Create a server firewall rule that allows access from the specified IP range
$firewallParams = @{
ResourceGroupName = $resourceGroupName
ServerName = $serverName
FirewallRuleName = "AllowedIPs"
StartIpAddress = $startIp
EndIpAddress = $endIp
}
$firewallRule = New-AzSqlServerFirewallRule @firewallParams
# Create a blank database with an S0 performance level
$databaseParams = @{
ResourceGroupName = $resourceGroupName
ServerName = $serverName
DatabaseName = $databaseName
RequestedServiceObjectiveName = "S0"
}
$database = New-AzSqlDatabase @databaseParams
Start-Sleep -second 600
# Restore database to its state 7 minutes ago
# Note: Point-in-time restore requires database to be at least 5 minutes old
$restoreParams = @{
FromPointInTimeBackup = $true
PointInTime = (Get-Date).AddMinutes(-7)
ResourceGroupName = $resourceGroupName
ServerName = $serverName
TargetDatabaseName = $pointInTimeRestoreDatabaseName
ResourceId = $database.ResourceID
Edition = "Standard"
ServiceObjectiveName = "S0"
}
Restore-AzSqlDatabase @restoreParams
# Note: For performing geo-restore for a managed instance database, use -FromGeoBackup parameter with restore.
# Sample script: Restore-AzSqlDatabase -FromGeoBackup -ResourceGroupName "TargetResourceGroup" -ServerName "TargetServer" -TargetDatabaseName "RestoredDatabase" -ResourceId $geoBackup.ResourceID -Edition "Standard" -RequestedServiceObjectiveName "S2"
# Clean up deployment
# Remove-AzResourceGroup -ResourceGroupName $resourceGroupName
清理部署
使用以下命令删除资源组及其相关的所有资源。
Remove-AzResourceGroup -ResourceGroupName $resourcegroupname
脚本说明
此脚本使用以下命令。 表中的每条命令链接到特定于命令的文档。
| 命令 | 注释 |
|---|---|
| New-AzResourceGroup | 创建用于存储所有资源的资源组。 |
| New-AzSqlServer | 创建托管数据库和弹性池的服务器。 |
| New-AzSqlDatabase | 在服务器中创建数据库。 |
| Get-AzSqlDatabaseGeoBackup | 获取独立数据库或共用数据库的异地冗余备份。 |
| Restore-AzSqlDatabase | 还原数据库。 |
| Remove-AzSqlDatabase | 删除数据库。 |
| 获取已删除的Azure SQL数据库备份 | 获取可以还原的已删除数据库。 |
| Remove-AzResourceGroup | 删除资源组,包括所有嵌套的资源。 |