RESTORE (Transact-SQL)
Restaura backups feitos por meio do comando BACKUP. Esse comando permite executar os seguintes cenários de restauração:
Restaurar um banco de dados inteiro de um backup de banco de dados completo (uma restauração completa).
Restaurar parte de um banco de dados (uma restauração parcial).
Restaurar arquivos ou grupos de arquivos específicos para um banco de dados (uma restauração de arquivo).
Restaurar páginas específicas para um banco de dados (uma restauração de página).
Restaurar um log de transações em um banco de dados (uma restauração de log de transações).
Reverter um banco de dados ao momento determinado capturado por um instantâneo do banco de dados.
Para obter mais informações sobre cenários de restauração do SQL Server, consulte Visão geral da restauração e recuperação (SQL Server).
Observação |
---|
Para obter mais informações sobre descrições dos argumentos, consulte Argumentos de RESTORE (Transact-SQL). |
Observação |
---|
A partir da atualização cumulativa 2 do SQL Server 2012 SP1, há suporte para o backup do SQL Server no serviço de armazenamento de Blob do Windows Azure. Para obter mais informações, consulte Aprimoramentos de backup e restauração e Backup e restauração do SQL Server com o serviço de armazenamento de Blob do Windows Azure. |
Convenções de sintaxe Transact-SQL
Sintaxe
--To Restore an Entire Database from a Full database backup (a Complete Restore):
RESTORE DATABASE { database_name | @database_name_var }
[ FROM <backup_device> [ ,...n ] ]
[ WITH
{
[ RECOVERY | NORECOVERY | STANDBY =
{standby_file_name | @standby_file_name_var }
]
| , <general_WITH_options> [ ,...n ]
| , <replication_WITH_option>
| , <change_data_capture_WITH_option>
| , <FILESTREAM_WITH_option>
| , <service_broker_WITH options>
| , <point_in_time_WITH_options—RESTORE_DATABASE>
} [ ,...n ]
]
[;]
--To perform the first step of the initial restore sequence
-- of a piecemeal restore:
RESTORE DATABASE { database_name | @database_name_var }
<files_or_filegroups> [ ,...n ]
[ FROM <backup_device> [ ,...n ] ]
WITH
PARTIAL, NORECOVERY
[ , <general_WITH_options> [ ,...n ]
| , <point_in_time_WITH_options—RESTORE_DATABASE>
] [ ,...n ]
[;]
--To Restore Specific Files or Filegroups:
RESTORE DATABASE { database_name | @database_name_var }
<file_or_filegroup> [ ,...n ]
[ FROM <backup_device> [ ,...n ] ]
WITH
{
[ RECOVERY | NORECOVERY ]
[ , <general_WITH_options> [ ,...n ] ]
} [ ,...n ]
[;]
--To Restore Specific Pages:
RESTORE DATABASE { database_name | @database_name_var }
PAGE = 'file:page [ ,...n ]'
[ , <file_or_filegroups> ] [ ,...n ]
[ FROM <backup_device> [ ,...n ] ]
WITH
NORECOVERY
[ , <general_WITH_options> [ ,...n ] ]
[;]
--To Restore a Transaction Log:
RESTORE LOG { database_name | @database_name_var }
[ <file_or_filegroup_or_pages> [ ,...n ] ]
[ FROM <backup_device> [ ,...n ] ]
[ WITH
{
[ RECOVERY | NORECOVERY | STANDBY =
{standby_file_name | @standby_file_name_var }
]
| , <general_WITH_options> [ ,...n ]
| , <replication_WITH_option>
| , <point_in_time_WITH_options—RESTORE_LOG>
} [ ,...n ]
]
[;]
--To Revert a Database to a Database Snapshot:
RESTORE DATABASE { database_name | @database_name_var }
FROM DATABASE_SNAPSHOT = database_snapshot_name
<backup_device>::=
{
{ logical_backup_device_name |
@logical_backup_device_name_var }
| { DISK | TAPE } = { 'physical_backup_device_name' |
@physical_backup_device_name_var }
}
<files_or_filegroups>::=
{
FILE = { logical_file_name_in_backup | @logical_file_name_in_backup_var }
| FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }
| READ_WRITE_FILEGROUPS
}
<general_WITH_options> [ ,...n ]::=
--Restore Operation Options
MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name'
[ ,...n ]
| REPLACE
| RESTART
| RESTRICTED_USER
--Backup Set Options
| FILE = { backup_set_file_number | @backup_set_file_number }
| PASSWORD = { password | @password_variable }
--Media Set Options
| MEDIANAME = { media_name | @media_name_variable }
| MEDIAPASSWORD = { mediapassword | @mediapassword_variable }
| BLOCKSIZE = { blocksize | @blocksize_variable }
--Data Transfer Options
| BUFFERCOUNT = { buffercount | @buffercount_variable }
| MAXTRANSFERSIZE = { maxtransfersize | @maxtransfersize_variable }
--Error Management Options
| { CHECKSUM | NO_CHECKSUM }
| { STOP_ON_ERROR | CONTINUE_AFTER_ERROR }
--Monitoring Options
| STATS [ = percentage ]
--Tape Options
| { REWIND | NOREWIND }
| { UNLOAD | NOUNLOAD }
<replication_WITH_option>::=
| KEEP_REPLICATION
<change_data_capture_WITH_option>::=
| KEEP_CDC
<FILESTREAM_WITH_option>::=
| FILESTREAM ( DIRECTORY_NAME = directory_name )
<service_broker_WITH_options>::=
| ENABLE_BROKER
| ERROR_BROKER_CONVERSATIONS
| NEW_BROKER
<point_in_time_WITH_options—RESTORE_DATABASE>::=
| {
STOPAT = { 'datetime'| @datetime_var }
| STOPATMARK = 'lsn:lsn_number'
[ AFTER 'datetime']
| STOPBEFOREMARK = 'lsn:lsn_number'
[ AFTER 'datetime']
}
<point_in_time_WITH_options—RESTORE_LOG>::=
| {
STOPAT = { 'datetime'| @datetime_var }
| STOPATMARK = { 'mark_name' | 'lsn:lsn_number' }
[ AFTER 'datetime']
| STOPBEFOREMARK = { 'mark_name' | 'lsn:lsn_number' }
[ AFTER 'datetime']
}
Argumentos
Para obter descrições dos argumentos, consulte Argumentos de RESTORE (Transact-SQL).
Sobre cenários de restauração
O SQL Server dá suporte a vários cenários de restauração:
Restauração completa do banco de dados
Restaura todo o banco de dados, começando com um backup completo do banco de dados, que pode ser seguido pela restauração de um backup diferencial do banco de dados (e backups de log). Para obter mais informações, consulte Restaurações completas de banco de dados (modelo de recuperação simples) ou Restaurações completas de banco de dados (modelo de recuperação completa).
Restauração de arquivo
Restaura um arquivo ou grupo de arquivos em um banco de dados com vários grupos de arquivos. Observe que no modelo de recuperação simples, o arquivo deve pertencer a um grupo de arquivos somente leitura. Depois de uma restauração completa do arquivo, um backup de arquivo diferencial pode ser restaurado. Para obter mais informações, consulte Restaurações de arquivo (modelo de recuperação completa) e Restaurações de arquivos (modelo de recuperação simples).
Restauração de página
Restaura páginas individuais. A restauração de página só está disponível nos modelos de recuperação completa e bulk-logged. Para obter mais informações, consulte Restaurar páginas (SQL Server).
Restauração por etapas
Restaura o banco de dados por etapas, começando com o grupo de arquivos primário e um ou mais grupos de arquivos secundários. Uma restauração por etapas começa com um RESTORE DATABASE, usando a opção PARTIAL e especificando um ou mais grupos de arquivos secundários a serem restaurados. Para obter mais informações, consulte Restaurações por etapas (SQL Server).
Somente recuperação
Recupera dados que já estão consistentes com o banco de dados e só precisam ser disponibilizados. Para obter mais informações, consulte Recuperar um banco de dados sem restaurar dados (Transact-SQL).
Restauração de log de transações.
No modelo de recuperação completa ou bulk-logged, a restauração de backups de log é exigida para alcançar o ponto de recuperação desejado. Para obter mais informações sobre restauração de backups de log, consulte Aplicar backups de log de transações (SQL Server).
Prepare um banco de dados de disponibilidade para um grupo de disponibilidade AlwaysOn
Para obter mais informações, consulte Preparar um banco de dados secundário manualmente para um grupo de disponibilidade (SQL Server).
Preparar um banco de dados espelho para espelhamento de banco de dados
Para obter mais informações, consulte Preparar um banco de dados espelho para espelhamento (SQL Server).
Restauração online
Observação A restauração online é permitida apenas no SQL Server 2005 Enterprise Edition e em versões posteriores.
Quando houver suporte para a restauração online, se o banco de dados estiver online, restaurações de páginas e de arquivos serão automaticamente restaurações online e, também, restaurações de grupos de arquivos secundários após o estágio inicial de uma restauração por etapas.
Observação As restaurações online podem envolver transações adiadas.
Para obter mais informações, consulte Restauração online (SQL Server).
Considerações adicionais sobre opções de RESTORE
Palavras-chave RESTORE descontinuadas
As palavras-chave a seguir foram descontinuadas no SQL Server 2008:
Palavra-chave descontinuada |
Substituída por... |
Exemplo de palavra-chave de substituição |
---|---|---|
LOAD |
RESTORE |
RESTORE DATABASE |
TRANSACTION |
LOG |
RESTORE LOG |
DBO_ONLY |
RESTRICTED_USER |
RESTORE DATABASE ... WITH RESTRICTED_USER |
RESTORE LOG
RESTORE LOG pode incluir uma lista de arquivos para permitir a criação de arquivos durante o roll forward. Isso é usado quando o backup de log contiver registros de log gravados quando um arquivo foi adicionado ao banco de dados.
Observação |
---|
Para um banco de dados que usa o modelo de recuperação completa ou bulk-logged, na maioria dos casos é necessário fazer backup do final do log antes da restauração do banco de dados. Restaurar um banco de dados sem antes fazer backup do final do log resultará em um erro, a não ser que a instrução RESTORE DATABASE contenha a cláusula WITH REPLACE ou WITH STOPAT, que deve especificar uma hora ou uma transação que ocorreu após o final dos backup de dados. Para obter mais informações sobre os backups da parte final do log, consulte Backups da parte final do log (SQL Server). |
Comparação de RECOVERY e NORECOVERY
A reversão é controlada pela instrução RESTORE nas opções [RECOVERY | NORECOVERY]:
NORECOVERY especifica que a reversão não ocorre. Isso permite que o roll forward continue com a próxima instrução na sequência.
Nesse caso, a seqüência de restauração pode restaurar outros backups e efetuar roll forward neles.
RECOVERY (o padrão) indica que a reversão deve ser executada após a conclusão do roll forward no backup atual.
A recuperação do banco de dados requer que todo o conjunto de dados que está sendo restaurado (o conjunto de roll forward) esteja consistente com o banco de dados. Se o conjunto de roll forward não tiver ido longe o suficiente para ficar consistente com o banco de dados e RECOVERY estiver especificado, o Mecanismo de Banco de Dados emitirá um erro.
Suporte de compatibilidade
No SQL Server 2012, é possível restaurar um banco de dados de usuário de um backup de banco de dados criado por meio do SQL Server 2005 ou de uma versão posterior. No entanto, os backups do mestre, modelo e msdb que foram criados no SQL Server 2005 ou no SQL Server 2008 não poderão ser restaurados pelo SQL Server 2012. Além disso, backups criados no SQL Server 2012 não podem ser restaurados por nenhuma versão anterior do SQL Server.
Observação |
---|
Nenhum backup do SQL Server pode ser restaurado para uma versão anterior do SQL Server a não ser na versão na qual o backup foi criado. |
O SQL Server 2012 usa um caminho padrão diferente das versões anteriores. Assim, para restaurar um banco de dados que foi criado no local padrão dos backups do SQL Server 2005 ou do SQL Server 2008, você deve usar a opção MOVE. Para obter informações sobre o novo caminho padrão, consulte Locais de arquivos para instâncias padrão e nomeadas do SQL Server.
Depois de restaurar um banco de dados do SQL Server 2005 ou do SQL Server 2008 no SQL Server 2012, o banco de dados será atualizado automaticamente. Normalmente, o banco de dados se torna disponível imediatamente. No entanto, se um banco de dados do SQL Server 2005 tiver índices de texto completo, o processo de atualização importará, redefinirá ou recriará esses índices dependendo da configuração da propriedade de servidor upgrade_option. Se a opção de atualização for definida para importar (upgrade_option = 2) ou recriar (upgrade_option = 0), os índices de texto completo permanecerão indisponíveis durante a atualização. Dependendo da quantidade de dados a serem indexados, a importação pode levar várias horas, e a recompilação pode ser até dez vezes mais demorada. Lembre-se também de que, quando a opção de atualização estiver definida para importar, os índices de texto completo associados serão recriados se um catálogo de texto completo não estiver disponível. Para alterar a configuração da propriedade de servidor upgrade_option, use sp_fulltext_service.
Quando um banco de dados é anexado ou restaurado pela primeira vez a uma nova instância do SQL Server, uma cópia da chave mestra de banco de dados (criptografada pela chave mestra de serviço) ainda não está armazenada no servidor. Você deve usar a instrução OPEN MASTER KEY para descriptografar a chave mestra do banco de dados (DMK). Uma vez que a DMK foi descriptografada, você tem a opção de permitir a descriptografia automática futuramente usando a instrução ALTER MASTER KEY REGENERATE para fornecer ao servidor uma cópia da DMK criptografada com a SMK. Quando um banco de dados for atualizado de uma versão anterior, a DMK deverá ser regenerada para usar o algoritmo AES mais recente. Para obter mais informações sobre a regeneração da DMK, consulte ALTER MASTER KEY (Transact-SQL). O tempo necessário para regenerar a chave DMK para atualizar o AES depende do número de objetos protegidos pela DMK. É necessário regenerar a chave DMK para atualizar o AES somente uma vez, isso não tem impacto sobre regenerações futuras como parte de uma estratégia de rotação de chave.
Comentários gerais
Durante uma restauração offline, se o banco de dados especificado estiver em uso, RESTORE forçará a saída do usuário depois de um pequeno atraso. Para restauração online de um grupo de arquivos não primário, o banco de dados pode permanecer em uso, exceto quando o grupo de arquivos que está sendo restaurado for colocado offline. Todos os dados no banco de dados especificado são substituídos pelos dados restaurados.
Para obter mais informações sobre a recuperação de banco de dados, consulte Visão geral da restauração e recuperação (SQL Server).
As operações de restauração entre plataformas, mesmo entre tipos diferentes de processadores, podem ser executadas desde que o agrupamento do banco de dados tenha suporte no sistema operacional.
RESTORE pode ser reiniciado depois de um erro. Além disso, você pode instruir RESTORE a prosseguir, apesar dos erros, e ele restaura o máximo possível de dados (consulte a opção CONTINUE_AFTER_ERROR).
RESTORE não é permitido em uma transação explícita ou implícita.
A restauração de um banco de dados mestre danificado é executada por meio de um procedimento especial. Para obter mais informações, consulte Fazer backup e restaurar bancos de dados do sistema (SQL Server).
A restauração de um banco de dados limpa o cache de planos da instância do SQL Server. A limpeza do cache de planos gera uma recompilação de todos os planos de execução subsequentes e pode provocar uma redução repentina e temporária do desempenho de consultas. Como no SQL Server 2005 Service Pack 2, para cada armazenamento de cache limpo no cache do plano, o log de erro SQL Server contém a seguinte mensagem informativa: "SQL Server encontrou %d ocorrências de liberação de armazenamento no cache '%s' (parte do cache de planos) devido à manutenção do banco de dados ou operações de reconfiguração". Essa mensagem é registrada a cada cinco minutos, contanto que o cache seja liberado dentro desse intervalo de tempo.
Para restaurar um banco de dados de disponibilidade, primeiro restaure o banco de dados à instância de SQL Server, em seguida, adicione o banco de dados ao grupo de disponibilidade.
Interoperabilidade
Restauração e configuração do banco de dados
Durante uma restauração, a maioria das opções do banco de dados que são configuráveis com ALTER DATABASE é redefinida com os valores em vigor no momento do término do backup.
Porém, o uso da opção WITH RESTRICTED_USER substitui esse comportamento pela configuração da opção de acesso do usuário. Essa configuração sempre é definida seguindo uma instrução RESTORE que inclui a opção WITH RESTRICTED_USER.
Restaurando um banco de dados criptografado
Para restaurar um banco de dados criptografado, é necessário ter acesso ao certificado ou à chave assimétrica usada para criptografar o banco de dados. Sem o certificado ou a chave assimétrica, o banco de dados não pode ser restaurado. Como resultado, o certificado usado para criptografar a chave de criptografia do banco de dados deverá ser retido enquanto o backup for necessário. Para obter mais informações, consulte Certificados e chaves assimétricas do SQL Server.
Restaurando um bancos de dados habilitado para armazenamento vardecimal
O backup e a restauração funcionam corretamente com o formato de armazenamento vardecimal. Para obter mais informações sobre o formato de armazenamento vardecimal, consulte sp_db_vardecimal_storage_format (Transact-SQL).
Restaurar dados de texto completo
Dados de texto completo são restaurados com outros dados do banco de dados durante uma restauração completa. Usando a sintaxe RESTORE DATABASE database_name FROM backup_device comum, os arquivos de texto completo são restaurados como parte da restauração de arquivo de banco de dados.
A instrução RESTORE também pode ser usada para executar restaurações em locais alternados, restaurações diferenciais, restaurações de arquivos e grupos de arquivos e restaurações de arquivos e grupos de arquivos diferenciais de dados de texto completo. Além disso, RESTORE pode restaurar somente arquivos de texto completo, bem como dados de banco de dados.
Observação |
---|
Catálogos de texto completo importados do SQL Server 2005 ainda são tratados como arquivos de banco de dados. Nesse caso, o procedimento usado pelo SQL Server 2005 para fazer backup de catálogos de texto completo ainda se aplica, exceto pelo fato de que não é mais necessário pausar e retomar a operação de backup. Para obter mais informações, consulte Backup e restauração de catálogos de texto completo nos Manuais Online do SQL Server 2005. |
Metadados
O SQL Server inclui tabelas de histórico de backup e restauração que controlam a atividade de backup e restauração de cada instância de servidor. Quando uma restauração é executada, as tabelas de histórico de backup também são modificadas. Para obter mais informações sobre essas tabelas, consulte Informações de histórico e cabeçalho de backup (SQL Server).
Impacto da opção REPLACE
REPLACE raramente deve ser usado e só depois de cuidadosa consideração. Normalmente a restauração evita a substituição acidental de um banco de dados por um banco de dados diferente. Se o banco de dados especificado em uma instrução RESTORE já existir no servidor atual e a GUID de família do banco de dados especificado for diferente da GUID de família do banco de dados registrado no conjunto de backup, o banco de dados não será restaurado. Essa é uma proteção importante.
A opção REPLACE substitui várias verificações de segurança importantes que a restauração geralmente executa. As verificações substituídas são as seguintes:
Restauração de um banco de dados existente com um backup tirado de outro banco de dados.
Com a opção REPLACE, a restauração permite que você substitua um banco de dados existente por qualquer banco de dados do conjunto de backup, mesmo que o nome do banco de dados especificado seja diferente do nome de banco de dados registrado no conjunto de backup. Isso pode resultar na substituição acidental de um banco de dados por um banco de dados diferente.
Restauração de um banco de dados que usa o modelo de recuperação bulk-logged onde um backup do final do log não foi feito e a opção STOPAT não é usada.
Com a opção REPLACE, você pode perder trabalho confirmado porque não foi feito backup do log gravado mais recentemente.
Substituição de arquivos existentes.
Por exemplo, um engano poderia permitir a substituição de arquivos do tipo errado, como arquivos .xls, ou que estivessem sendo usados por outro banco de dados que não estivesse online. A perda de dados arbitrária é possível se arquivos existentes forem substituídos, embora o banco de dados restaurado esteja completo.
Refazendo uma restauração
Não é possível desfazer os efeitos de uma restauração; no entanto, você pode recusar os efeitos de roll forward e de cópia dos dados reiniciando em uma base de um arquivo por vez. Para recomeçar, restaure o arquivo desejado e execute o roll forward novamente. Por exemplo, se você restaurou muitos backups de log acidentalmente e excedeu o ponto de parada pretendido, reinicie a seqüência.
Uma sequência de restauração pode ser anulada e reiniciada com a restauração de todo o conteúdo dos arquivos afetados.
Revertendo um banco de dados para um instantâneo do banco de dados
Uma operação de reversão de banco de dados (especificada com a opção DATABASE_SNAPSHOT) reverte um banco de dados de origem completo, revertendo-o para o momento de um instantâneo do banco de dados, ou seja, com a substituição do banco de dados de origem pelos dados do momento determinado mantidos no instantâneo do banco de dados especificado. Só o instantâneo para o qual você está revertendo pode existir atualmente. A operação de reversão, então, reconstrói o log (portanto, você não poderá efetuar roll forward em um banco de dados revertido até o ponto do erro do usuário).
A perda de dados é limitada às atualizações no banco de dados desde a criação do instantâneo. Os metadados de um banco de dados revertido são iguais aos metadados no momento da criação do instantâneo. No entanto, a reversão para um instantâneo descarta todos os catálogos de texto completo.
A reversão a partir de um instantâneo do banco de dados não é destinada à recuperação de mídia. Ao contrário de um conjunto de backup regular, o instantâneo de banco de dados é uma cópia incompleta dos arquivos do banco de dados. Se o banco de dados ou o instantâneo do banco de dados está corrompido, é provável que a reversão a partir de um instantâneo seja impossível. Além disso, mesmo quando possível, é improvável que a reversão corrija o problema no caso de corrupção.
Restrições na reversão
Não há suporte para a reversão nas seguintes condições:
O banco de dados de origem contém algum grupo de arquivos somente leitura ou compactado.
Há algum arquivo offline que estava online quando o instantâneo foi criado.
Existe mais de um instantâneo do banco de dados atualmente.
Para obter mais informações, consulte Reverter um banco de dados a um instantâneo do banco de dados.
Segurança
Uma operação de backup pode opcionalmente especificar senhas para um conjunto de mídias, um conjunto de backup ou ambos. Quando uma senha tiver sido definida em um conjunto de backup ou de mídias, será preciso especificar a senha ou as senhas corretas na instrução RESTORE. Essas senhas impedem operações de restauração não autorizadas e anexações não autorizadas de conjuntos de backup em mídias que usam ferramentas do SQL Server. Porém, mídia protegida por senha pode ser substituída pela opção FORMAT da instrução BACKUP.
Observação sobre segurança |
---|
A proteção fornecida por esta senha é fraca. Destina-se a evitar uma restauração incorreta com o uso de ferramentas de SQL Server por usuários autorizados ou não autorizados. Não impede a leitura dos dados de backup por outros meios ou a substituição da senha. Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. A prática recomendada para proteger backups é armazenar as fitas de backup em um local seguro ou fazer backup em arquivos de disco protegidos por ACLs (listas de controle de acesso) adequadas. As ACLs devem ser definidas no diretório raiz em que os backups são criados. |
Permissões
Se o banco de dados que está sendo restaurado não existir, o usuário deverá ter permissões CREATE DATABASE para poder executar o comando RESTORE. Se o banco de dados existir, permissões RESTORE assumirão como padrão os membros das funções de servidor fixas sysadmin e dbcreator e o proprietário (dbo) do banco de dados (para a opção FROM DATABASE_SNAPSHOT, o banco de dados sempre existe).
As permissões RESTORE são concedidas a funções nas quais as informações de associação estão sempre disponíveis para o servidor. Como a associação da função de banco de dados fixa pode ser verificada apenas quando o banco de dados está acessível e não danificado, o que nem sempre é o caso quando RESTORE é executado, os membros da função de banco de dados fixa db_owner não têm permissões RESTORE.
Exemplos
Todos os exemplos presumem que um backup de banco de dados completo foi executado.
Os exemplos de RESTORE incluem o seguinte:
A. Restaurando um banco de dados completo
B. Restaurando backups de banco de dados diferenciais e completos
C. Restaurando um banco de dados usando a sintaxe RESTART
D. Restaurando um banco de dados e movendo arquivos
E. Copiando um banco de dados usando BACKUP e RESTORE
F. Restauração pontual usando STOPAT
G. Restaurando o log de transações até uma marca
H. Restaurando com o uso da sintaxe de TAPE
I. Restaurando usando a sintaxe FILE e FILEGROUP
J. Revertendo de um instantâneo do banco de dados
Observação |
---|
Para obter exemplos adicionais, consulte os tópicos de instruções de restauração listados em Visão geral da restauração e recuperação (SQL Server). |
A.Restaurando um banco de dados completo
O exemplo a seguir restaura um backup de banco de dados completo do dispositivo de backup lógico AdventureWorksBackups. Para obter um exemplo de como criar esse dispositivo, consulte Dispositivos de backup.
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorks2012Backups;
Observação |
---|
Para um banco de dados que usa o modelo de recuperação completa ou bulk-logged, o SQL Server requer um backup do final do log antes da restauração do banco de dados. Para obter mais informações, consulte Backups da parte final do log (SQL Server). |
[Início dos exemplos]
B.Restaurando backups de banco de dados diferenciais e completos
O exemplo a seguir restaura um backup de banco de dados completo seguido por um backup diferencial do dispositivo de backup Z:\SQLServerBackups\AdventureWorks2012.bak, que contém os dois backups. O backup de banco de dados completo a ser restaurado é o sexto conjunto de backup no dispositivo (FILE = 6), e o backup de banco de dados diferencial é o nono no dispositivo (FILE = 9). Assim que o backup diferencial é recuperado, o banco de dados é recuperado.
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE = 6
NORECOVERY;
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE = 9
RECOVERY;
[Início dos exemplos]
C.Restaurando um banco de dados usando a sintaxe RESTART
O exemplo a seguir usa a opção RESTART para reiniciar uma operação RESTORE interrompida por uma deficiência de força no servidor.
-- This database RESTORE halted prematurely due to power failure.
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorksBackups;
-- Here is the RESTORE RESTART operation.
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorksBackups WITH RESTART;
[Início dos exemplos]
D.Restaurando um banco de dados e movendo arquivos
O exemplo a seguir restaura um banco de dados completo e log de transações e move o banco de dados restaurado para o diretório C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data.
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorksBackups
WITH NORECOVERY,
MOVE 'AdventureWorks2012_Data' TO
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf',
MOVE 'AdventureWorks2012_Log'
TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf';
RESTORE LOG AdventureWorks2012
FROM AdventureWorksBackups
WITH RECOVERY;
[Início dos exemplos]
E.Copiando um banco de dados usando BACKUP e RESTORE
O exemplo a seguir usa as instruções BACKUP e RESTORE para fazer uma cópia do banco de dados AdventureWorks2012 . A instrução MOVE causa a restauração dos dados e do arquivo de log nos locais especificados. A instrução RESTORE FILELISTONLY é usada para determinar o número e os nomes dos arquivos no banco de dados que está sendo restaurado. A nova cópia do banco de dados é nomeada TestDB. Para obter mais informações, consulte RESTORE FILELISTONLY (Transact-SQL).
BACKUP DATABASE AdventureWorks2012
TO AdventureWorksBackups ;
RESTORE FILELISTONLY
FROM AdventureWorksBackups ;
RESTORE DATABASE TestDB
FROM AdventureWorksBackups
WITH MOVE 'AdventureWorks2012_Data' TO 'C:\MySQLServer\testdb.mdf',
MOVE 'AdventureWorks2012_Log' TO 'C:\MySQLServer\testdb.ldf';
GO
[Início dos exemplos]
F.Restauração pontual usando STOPAT
O exemplo a seguir restaura um banco de dados para seu estado a partir de 12:00 AM em April 15, 2020 e mostra uma operação de restauração que envolve vários backups de log. No dispositivo de backup, AdventureWorksBackups, o backup de banco de dados completo a ser restaurado é o terceiro conjunto de backup no dispositivo (FILE = 3), o primeiro backup de log é o quarto conjunto de backup (FILE = 4), e o segundo backup de log é o quinto conjunto de backup (FILE = 5).
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorksBackups
WITH FILE=3, NORECOVERY;
RESTORE LOG AdventureWorks2012
FROM AdventureWorksBackups
WITH FILE=4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE LOG AdventureWorks2012
FROM AdventureWorksBackups
WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE DATABASE AdventureWorks2012 WITH RECOVERY;
[Início dos exemplos]
G.Restaurando o log de transações até uma marca
O exemplo a seguir restaura o log de transações até a marca na transação marcada denominada ListPriceUpdate.
USE AdventureWorks2012
GO
BEGIN TRANSACTION ListPriceUpdate
WITH MARK 'UPDATE Product list prices';
GO
UPDATE Production.Product
SET ListPrice = ListPrice * 1.10
WHERE ProductNumber LIKE 'BK-%';
GO
COMMIT TRANSACTION ListPriceUpdate;
GO
-- Time passes. Regular database
-- and log backups are taken.
-- An error occurs in the database.
USE master;
GO
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorksBackups
WITH FILE = 3, NORECOVERY;
GO
RESTORE LOG AdventureWorks2012
FROM AdventureWorksBackups
WITH FILE = 4,
RECOVERY,
STOPATMARK = 'UPDATE Product list prices';
[Início dos exemplos]
H.Restaurando com o uso da sintaxe de TAPE
O exemplo a seguir restaura um backup de banco de dados completo de um dispositivo de backup TAPE.
RESTORE DATABASE AdventureWorks2012
FROM TAPE = '\\.\tape0';
[Início dos exemplos]
I.Restaurando usando a sintaxe FILE e FILEGROUP
O exemplo a seguir restaura um banco de dados nomeado MyDatabase que tem dois arquivos, um grupo de arquivos secundário e um log de transações. O banco de dados usa o modelo de recuperação completa.
O backup do banco de dados é o nono conjunto de backup no conjunto de mídias em um dispositivo de backup lógico nomeado MyDatabaseBackups. Depois, três backups de log, que estão nos próximos três conjuntos de backup (10, 11 e 12) no dispositivo MyDatabaseBackups, são restaurados usando WITH NORECOVERY. Depois de restaurar o último backup de log, o banco de dados é recuperado.
Observação |
---|
A recuperação é executada como uma etapa separada para reduzir a possibilidade de recuperação antecipada, antes que todos os backups de log tenham sido restaurados. |
No RESTORE DATABASE, observe que há dois tipos de opções de FILE. As opções FILE que precedem o nome do dispositivo de backup especificam os nomes de arquivos lógicos dos arquivos de banco de dados restaurados do conjunto de backup; por exemplo, FILE = 'MyDatabase_data_1'. Esse conjunto de backups não é o primeiro backup de banco de dados no conjunto de mídias; portanto, sua posição no conjunto de mídias é indicada com a opção FILE na cláusula WITH, FILE=9.
RESTORE DATABASE MyDatabase
FILE = 'MyDatabase_data_1',
FILE = 'MyDatabase_data_2',
FILEGROUP = 'new_customers'
FROM MyDatabaseBackups
WITH
FILE = 9,
NORECOVERY;
GO
-- Restore the log backups.
RESTORE LOG MyDatabase
FROM MyDatabaseBackups
WITH FILE = 10,
NORECOVERY;
GO
RESTORE LOG MyDatabase
FROM MyDatabaseBackups
WITH FILE = 11,
NORECOVERY;
GO
RESTORE LOG MyDatabase
FROM MyDatabaseBackups
WITH FILE = 12,
NORECOVERY;
GO
--Recover the database:
RESTORE DATABASE MyDatabase WITH RECOVERY;
GO
[Início dos exemplos]
K.Revertendo de um instantâneo do banco de dados
O exemplo a seguir reverte um banco de dados para um instantâneo do banco de dados. O exemplo presume que existe apenas um instantâneo atualmente no banco de dados. Para obter um exemplo de como criar esse instantâneo de banco de dados, consulte Criar um instantâneo do banco de dados (Transact-SQL).
Observação |
---|
A reversão para um instantâneo cancela todos os catálogos de texto completo. |
USE master;
RESTORE DATABASE AdventureWorks2012 FROM DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO
Para obter mais informações, consulte Reverter um banco de dados a um instantâneo do banco de dados.
[Início dos exemplos]
Consulte também
Referência
RESTORE REWINDONLY (Transact-SQL)
RESTORE VERIFYONLY (Transact-SQL)
Conceitos
Fazer backup e restaurar bancos de dados do SQL Server
Fazer backup e restaurar bancos de dados do sistema (SQL Server)
Fazer backup e restaurar índices e catálogos de texto completo
Fazer backup e restaurar bancos de dados replicados
Conjuntos de mídias, famílias de mídia e conjuntos de backup (SQL Server)