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ção |
---|
Para obter mais informações sobre as descrições dos argumentos, consulte Argumentos de RESTORE (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']
}
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çã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:
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 Executando uma restauração completa de banco de dados (modelo de recuperação simples) ou Executando uma restauração completa 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 Executando restaurações de arquivo (modelo de recuperação completa) e Executando 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 Executando restaurações de página.
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 Executando restauração por etapas.
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 Recuperando um banco de dados sem restaurar dados.
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 Aplicando backups de log de transações.
Criar um banco de dados espelho.
Para obter mais informações, consulte Como preparar um banco de dados espelho para o espelhamento (Transact-SQL).
Criar e manter um servidor em espera. Para obter mais informações sobre os servidores em espera, consulte Usando servidores em espera passiva.
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çã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çã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çã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çã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çã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çã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ç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çã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çã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çã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çã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çã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]
Consulte também