Usar o PowerShell para restaurar um banco de dados para um ponto anterior no tempo
Aplica-se a:Banco de Dados SQL do Azure
Este exemplo de script do PowerShell restaura um banco de dados no Banco de dados SQL para um point-in-time específico.
Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.
Nota
Este artigo usa o módulo Azure Az PowerShell, que é o módulo PowerShell recomendado para interagir com o Azure. Para começar a utilizar o módulo Azure PowerShell, veja Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.
Utilizar o Azure Cloud Shell
O Azure aloja o Azure Cloud Shell, um ambiente de shell interativo que pode utilizar através do seu browser. Pode utilizar o Bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. Você pode usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada em seu ambiente local.
Para iniciar o Azure Cloud Shell:
Opção | Exemplo/Ligação |
---|---|
Selecione Experimentar no canto superior direito de um bloco de código. A seleção de Experimente não copia automaticamente o código para o Cloud Shell. | |
Aceda a https://shell.azure.com ou selecione o botão Iniciar Cloud Shell para abrir o Cloud Shell no browser. | |
Selecione o botão Cloud Shell na barra de menus, na parte direita do portal do Azure. |
Para executar o código neste artigo no Azure Cloud Shell:
Inicie o Cloud Shell.
Selecione o botão Copiar num bloco de código para copiar o código.
Cole o código na sessão do Cloud Shell selecionando Ctrl+Shift V no Windows e Linux ou selecionando Cmd+Shift++V no macOS.
Selecione Introduzir para executar o código.
Se você optar por instalar e usar o PowerShell localmente, este tutorial exigirá o Az PowerShell 1.4.0 ou posterior. Se precisar de atualizar, veja Install Azure PowerShell module (Instalar o módulo do Azure PowerShell). Se estiver a executar localmente o PowerShell, também terá de executar o Connect-AzAccount
para criar uma ligação com o Azure.
Script de exemplo
# Connect-AzAccount
$SubscriptionId = ''
# Set the resource group name and location for your server
$resourceGroupName = "myResourceGroup-$(Get-Random)"
$location = "westus2"
# Set an admin login and password for your server
$adminSqlLogin = "SqlAdmin"
$password = "ChangeYourAdminPassword1"
# 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
# Create a server with a system wide unique server name
$server = New-AzSqlServer -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-Location $location `
-SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminSqlLogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))
# Create a server firewall rule that allows access from the specified IP range
$firewallRule = New-AzSqlServerFirewallRule -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-FirewallRuleName "AllowedIPs" -StartIpAddress $startIp -EndIpAddress $endIp
# Create a blank database with an S0 performance level
$database = New-AzSqlDatabase -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-RequestedServiceObjectiveName "S0"
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
Restore-AzSqlDatabase `
-FromPointInTimeBackup `
-PointInTime (Get-Date).AddMinutes(-7) `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-TargetDatabaseName $pointInTimeRestoreDatabaseName `
-ResourceId $database.ResourceID `
-Edition "Standard" `
-ServiceObjectiveName "S0"
# 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
Limpar a implementação
Use o comando a seguir para remover o grupo de recursos e todos os recursos associados a ele.
Remove-AzResourceGroup -ResourceGroupName $resourcegroupname
Explicação do script
Este script utiliza os seguintes comandos. Cada comando na tabela liga à documentação específica do comando.
Command | Notas |
---|---|
New-AzResourceGroup | Cria um grupo de recursos no qual todos os recursos são armazenados. |
New-AzSqlServer | Cria um servidor que hospeda bancos de dados e pools elásticos. |
New-AzSqlDatabase | Cria um banco de dados em um servidor. |
Get-AzSqlDatabaseGeoBackup | Obtém um backup com redundância geográfica de um banco de dados autônomo ou em pool. |
Restore-AzSqlDatabase | Restaura um banco de dados. |
Remove-AzSqlDatabase | Remove um banco de dados. |
Get-AzSqlDeletedDatabaseBackup | Obtém uma base de dados eliminada que pode restaurar. |
Remove-AzResourceGroup | Elimina um grupo de recursos, incluindo todos os recursos aninhados. |
Próximos passos
Para obter mais informações sobre o Azure PowerShell, consulte a documentação do Azure PowerShell.
Pode ver exemplos do script do PowerShell da Base de Dados SQL adicionais nos scripts do PowerShell da Base de Dados SQL do Azure.