Usar o PowerShell para restaurar um banco de dados para um ponto anterior no tempoUse PowerShell to restore a database to an earlier point in time

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 ponto específico no tempo.This PowerShell script example restores a database in SQL Database to a specific point in time.

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.If you don't have an Azure subscription, create a free account before you begin.

Observação

Este artigo foi atualizado para usar o módulo Az PowerShell do Azure.This article has been updated to use the Azure Az PowerShell module. O módulo Az PowerShell é o módulo do PowerShell recomendado para interagir com o Azure.The Az PowerShell module is the recommended PowerShell module for interacting with Azure. Para começar a usar o módulo do Az PowerShell, confira Instalar o Azure PowerShell.To get started with the Az PowerShell module, see Install Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.To learn how to migrate to the Az PowerShell module, see Migrate Azure PowerShell from AzureRM to Az.

Usar o Azure Cloud ShellUse Azure Cloud Shell

O Azure hospeda o Azure Cloud Shell, um ambiente de shell interativo que pode ser usado por meio do navegador.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. É possível usar o bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. É possível usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo sem precisar instalar nada no seu ambiente local.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Para iniciar o Azure Cloud Shell:To start Azure Cloud Shell:

OpçãoOption Exemplo/LinkExample/Link
Selecione Experimente no canto superior direito de um bloco de código.Select Try It in the upper-right corner of a code block. Selecionar Experimente não copia automaticamente o código para o Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Exemplo de “Experimente” no Azure Cloud Shell
Acesse https://shell.azure.com ou selecione o botão Iniciar o Cloud Shell para abri-lo no navegador.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Inicie o Cloud Shell em uma nova janelaLaunch Cloud Shell in a new window
Selecione o botão Cloud Shell na barra de menus no canto superior direito do portal do Azure.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Botão Cloud Shell no portal do Azure

Para executar o código neste artigo no Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Inicie o Cloud Shell.Start Cloud Shell.

  2. Clique no botão Copiar no bloco de código para copiá-lo.Select the Copy button on a code block to copy the code.

  3. Cole o código na sessão do Cloud Shell ao pressionar Ctrl+Shift+V no Windows e no Linux ou Cmd+Shift+V no macOS.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Pressione Enter para executar o código.Select Enter to run the code.

Quando você opta por instalar e usar o PowerShell localmente, este tutorial exige o Az PowerShell 1.4.0 ou posterior.If you choose to install and use PowerShell locally, this tutorial requires Az PowerShell 1.4.0 or later. Se você precisa atualizar, consulte Instalar o módulo do Azure PowerShell.If you need to upgrade, see Install Azure PowerShell module. Se você estiver executando o PowerShell localmente, também precisará executar o Connect-AzAccount para criar uma conexão com o Azure.If you are running PowerShell locally, you also need to run Connect-AzAccount to create a connection with Azure.

Exemplo de scriptSample script

# 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 implantaçãoClean up deployment

Use o comando a seguir para remover o grupo de recursos e todos os recursos associados a ele.Use the following command to remove the resource group and all resources associated with it.

Remove-AzResourceGroup -ResourceGroupName $resourcegroupname

Explicação sobre o scriptScript explanation

Este script usa os comandos a seguir.This script uses the following commands. Cada comando na tabela redireciona para a documentação específica do comando.Each command in the table links to command-specific documentation.

ComandoCommand ObservaçõesNotes
New-AzResourceGroupNew-AzResourceGroup Cria um grupo de recursos no qual todos os recursos são armazenados.Creates a resource group in which all resources are stored.
New-AzSqlServerNew-AzSqlServer Cria um servidor que hospeda bancos de dados e pools elásticos.Creates a server that hosts databases and elastic pools.
New-AzSqlDatabaseNew-AzSqlDatabase Cria um banco de dados em um servidor.Creates a database in a server.
Get-AzSqlDatabaseGeoBackupGet-AzSqlDatabaseGeoBackup Obtém um backup com redundância geográfica de um banco de dados em pool ou individual.Gets a geo-redundant backup of a standalone or pooled database.
Restore-AzSqlDatabaseRestore-AzSqlDatabase Restaura um banco de dados.Restores a database.
Remove-AzSqlDatabaseRemove-AzSqlDatabase Remove um banco de dados.Removes a database.
Get-AzSqlDeletedDatabaseBackupGet-AzSqlDeletedDatabaseBackup Obtém um banco de dados excluído que você pode restaurar.Gets a deleted database that you can restore.
Remove-AzResourceGroupRemove-AzResourceGroup Exclui um grupo de recursos, incluindo todos os recursos aninhados.Deletes a resource group including all nested resources.

Próximas etapasNext steps

Para obter mais informações sobre o Azure PowerShell, confira a Documentação do Azure PowerShell.For more information on Azure PowerShell, see Azure PowerShell documentation.

Outros exemplos de script do PowerShell para Banco de Dados SQL podem ser encontrados nos scripts do PowerShell para Banco de Dados SQL do Azure.Additional SQL Database PowerShell script samples can be found in the Azure SQL Database PowerShell scripts.