Compartilhar via


RESTORE (Transact-SQL)

Restaura backups feitos usando o comando BACKUP. Esse comando permite que você execute 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) e Implementando cenários de restauração para bancos de dados do SQL Server.

ObservaçãoObservação

Para obter mais informações sobre as descrições dos argumentos, consulte Argumentos de RESTORE (Transact-SQL).

Ícone de vínculo de tópicoConvençõ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>
      | , <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

<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).

Comentários

Você não pode restaurar o backup de um banco de dados compactado para um banco de dados não compactado.

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 Compreendendo como a restauração e a recuperação de backups funcionam no SQL Server e Implementando cenários de restauração para bancos de dados do 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). Para obter mais informações, consulte Respondendo a erros de restauração dos SQL Server causado por backups danificados.

RESTORE não é permitido em uma transação explícita ou implícita.

A restauração de um banco de dados mestre corrompido é executada com o uso de um procedimento especial. Para obter mais informações, consulte Considerações sobre restauração do banco de dados mestre.

Backups criados com o MicrosoftSQL Server não podem ser restaurados para uma versão anterior do SQL Server.

A restauração de um banco de dados limpa o cache de planos para a instância do SQL Server. A limpeza do cache de planos gera uma recompilação de todos os planos de execução subseqüentes e pode provocar uma queda repentina e temporária no desempenho das consultas. A partir do SQL Server 2005 Service Pack 2, para cada armazenamento em cache limpo no cache de planos, o log de erros do SQL Server contém a seguinte mensagem informativa: "O SQL Server encontrou %d ocorrência(s) de liberação do armazenamento em 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.

O banco de dados que está sendo restaurado deve ser pelo menos versão 80 (SQL Server 2000) para que seja restaurado para o SQL Server 2008. Bancos de dados do SQL Server 2000 ou SQL Server 2005 com um nível de compatibilidade inferior a 80 serão definidos como compatibilidade 80 quando restaurados.

ObservaçãoObservação

Após a restauração de um banco de dados do SQL Server 2005 ou do SQL Server 2000 no SQL Server 2008, o banco de dados estará imediatamente disponível e, em seguida, será atualizado de forma automática. Se o banco de dados 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 recriação pode ser até dez vezes mais demorada. Quando a opção de atualização estiver definida para importar, os índices de texto completo associados serão recriados se nenhum catálogo de texto completo estiver disponível. Para alterar a configuração da propriedade de servidor upgrade_option, use sp_fulltext_service.

Cenários de restauração

O SQL Server oferece suporte a uma variedade de cenários de restauração:

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

Requisito para restaurar 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.

Bancos de dados habilitados para o formato de 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 Armazenando dados decimais como comprimento variável.

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 seqüê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.

Refazendo uma restauração

Não é possível desfazer os efeitos de uma restauração; entretanto, você pode recusar os efeitos de roll forward e cópia dos dados reiniciando em termos 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 seqüência de restauração pode ser anulada e reiniciada restaurando todo o conteúdo dos arquivos afetados.

Restaurar dados de texto completo

Os 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çãoObservação

Catálogos de texto completo importados do SQL Server 2005 ou do SQL Server 2000 ainda são tratados como arquivos de banco de dados. Nesse caso, o procedimento que o SQL Server 2005 usa para fazer backup de catálogos de texto completo ainda se aplica, exceto pelo fato de que não é mais necessário pausar e continuar 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.

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.

ObservaçãoObservação

Esse comportamento é diferente nas versões do SQL Server anteriores ao SQL Server 2000.

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.

Tabelas de histórico de backup e restauração

O SQL Server inclui tabelas de histórico de backup e restauração que controlam a atividade de backup e restauração para 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 Exibindo informações sobre backups.

RESTORE LOG

RESTORE LOG pode incluir uma lista de arquivos para permitir a criação de arquivos durante o roll forward. Isso será usado quando o backup de log contiver registros de log gravados quando um arquivo foi adicionado ao banco de dados.

ObservaçãoObservaçã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 um momento ou transação que ocorreu após o final do backup de dados. Para obter mais informações sobre backups do final do log, consulte Backups da parte final do log.

Restauração online

ObservaçãoObservação

A restauração online só é permitida 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çãoObservação

Restaurações online podem envolver transações adiadas.

Para obter mais informações, consulte Executando restaurações online.

Restauração por etapas

A restauração por etapas, que era novidade no SQL Server 2005, aprimora a restauração parcial do MicrosoftSQL Server 2000. A restauração por etapas permite que grupos de arquivos sejam restaurados após uma restauração inicial, parcial dos grupos de arquivos primários e alguns secundários. Os grupos de arquivos que não são restaurados são marcados como offline e não são acessíveis. Porém, grupos de arquivos offline podem ser restaurados posteriormente por uma restauração de arquivo. Para permitir que todo o banco de dados seja restaurado em etapas em momentos diferentes, a restauração por etapas mantém verificações para garantir que o banco de dados esteja consistente no final.

ObservaçãoObservação

No SQL Server 2000, uma restauração parcial só pode ser feita de um backup de banco de dados completo. Essa restrição foi removida no SQL Server 2005.

Se uma seqüência de restauração parcial excluir qualquer grupo de arquivos FILESTREAM, não haverá suporte para a restauração pontual. Você pode forçar a seqüência de restauração a continuar. No entanto, os grupos de arquivos FILESTREAM que são omitidos da instrução RESTORE nunca poderão ser restaurados. Para forçar uma restauração pontual, especifique a opção CONTINUE_AFTER_ERROR juntamente com a opção STOPAT, STOPATMARK ou STOPBEFOREMARK, que você também deve especificar nas instruções RESTORE LOG subseqüentes. Se você especificar CONTINUE_AFTER_ERROR, a seqüência de restauração parcial terá êxito e o grupo de arquivos FILESTREAM se tornará irrecuperável.

Para obter mais informações sobre a restauração por etapas, consulte Executando restauração por etapas.

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, substituindo o 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 a 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 dano.

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 grupos de arquivos somente leitura ou compactados.

  • 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 Revertendo para um instantâneo do banco de dados.

Permissões

Se o banco de dados que está sendo restaurado não existir, o usuário deverá ter permissões CREATE DATABASE para executar RESTORE. Se o banco de dados existir, as 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 de função de banco de dados fixa só pode ser verificada quando o banco de dados está acessível e não danificado, o que nem sempre é o caso quando RESTORE é executado, membros da função de banco de dados fixa db_owner não têm permissões RESTORE.

Uma operação de backup pode especificar senhas opcionalmente 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 e acréscimos não autorizados de conjuntos de backup em mídia usando ferramentas do SQL Server. Entretanto, a mídia protegida por senha pode ser substituída pela opção FORMAT da instrução BACKUP.

Observação sobre segurançaObservação sobre segurança

A proteção fornecida por esta senha é fraca. Destina-se a impedir uma restauração incorreta com o uso de ferramentas do 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.

Exemplos

ObservaçãoObservação

O banco de dados AdventureWorks é mostrado para ilustração. O AdventureWorks é um dos bancos de dados de exemplo do SQL Server. A Adventure Works Cycles é uma empresa de fabricação fictícia utilizada para demonstrar conceitos e cenários de banco de dados. Para obter mais informações sobre esse banco de dados, consulte Bancos de dados de exemplo AdventureWorks.

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 usando a sintaxe TAPE

  • I. Restaurando usando a sintaxe FILE e FILEGROUP.

  • J. Revertendo a partir de um instantâneo do banco de dados

ObservaçãoObservação

Para obter exemplos adicionais, consulte Exemplos de seqüências de restauração para vários cenários de restauração e também os tópicos de instruções listados em Tópicos de instruções de backup e restauração (Transact-SQL).

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 AdventureWorks 
   FROM AdventureWorksBackups
ObservaçãoObservação

Para um banco de dados que usa o modelo de recuperação completa ou bulk-logged, o SQL Server requer que se faça 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.

[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\AdventureWorks.bak, que contém os dois backups. O backup de banco de dados completo a ser restaurado é o sexto conjunto de backups 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 AdventureWorks
   FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
   WITH FILE = 6
      NORECOVERY;
RESTORE DATABASE AdventureWorks
   FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.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 AdventureWorks
   FROM AdventureWorksBackups
-- Here is the RESTORE RESTART operation.
RESTORE DATABASE AdventureWorks 
   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\MSSQL10.MSSQLSERVER\MSSQL\Data.

RESTORE DATABASE AdventureWorks
   FROM AdventureWorksBackups
   WITH NORECOVERY, 
      MOVE 'AdventureWorks_Data' TO 
'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf', 
      MOVE 'AdventureWorks_Log' 
TO 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf'
RESTORE LOG AdventureWorks
   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 AdventureWorks. 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 AdventureWorks 
   TO AdventureWorksBackups ;

RESTORE FILELISTONLY 
   FROM AdventureWorksBackups ;

RESTORE DATABASE TestDB 
   FROM AdventureWorksBackups 
   WITH MOVE 'AdventureWorks_Data' TO 'C:\MySQLServer\testdb.mdf',
   MOVE 'AdventureWorks_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 AdventureWorks
   FROM AdventureWorksBackups
   WITH FILE=3, NORECOVERY;

RESTORE LOG AdventureWorks
   FROM AdventureWorksBackups
   WITH FILE=4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';

RESTORE LOG AdventureWorks
   FROM AdventureWorksBackups
   WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE DATABASE AdventureWorks 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 nomeada ListPriceUpdate.

USE AdventureWorks
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 AdventureWorks
FROM AdventureWorksBackups
WITH FILE = 3, NORECOVERY;
GO

RESTORE LOG AdventureWorks
   FROM AdventureWorksBackups 
   WITH FILE = 4,
   RECOVERY, 
   STOPATMARK = 'ListPriceUpdate';

[Início dos exemplos]

H. Restaurando usando a sintaxe TAPE

O exemplo a seguir restaura um backup de banco de dados completo de um dispositivo de backup TAPE.

RESTORE DATABASE AdventureWorks 
   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 denominado 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çãoObservaçã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 usando 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]

J. Revertendo a partir 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 exista apenas um instantâneo atualmente no banco de dados. Para obter um exemplo de como criar esse instantâneo de banco de dados, consulte Como criar um instantâneo do banco de dados (Transact-SQL).

ObservaçãoObservação

A reversão para um instantâneo descarta todos os catálogos de texto completo.

USE master  
RESTORE DATABASE AdventureWorks FROM DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO

Para obter mais informações, consulte Revertendo para um instantâneo do banco de dados.

[Início dos exemplos]