Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Pode restaurar uma cópia de segurança do registo de transações no SQL Server usando o SQL Server Management Studio, Transact-SQL ou PowerShell.
Pré-requisitos
Deve restaurar os backups pela ordem em que os criou. Antes de restaurar uma cópia de segurança específica do registo de transações, restaure as seguintes cópias de segurança anteriores sem reverter transações não consolidadas, usando WITH NORECOVERY:
O backup completo da base de dados e, opcionalmente, o último backup diferencial feito antes desse backup do registo de transações. A base de dados deve ter utilizado o modelo de recuperação completo ou com registo em bloco antes de ser criada a cópia de segurança da base de dados total ou diferencial mais recente.
Todas as cópias de segurança do registo de transações feitas após a cópia de segurança completa da base de dados ou a cópia de segurança diferencial (se restaurar uma) e antes dessa cópia de segurança do registo de transações. Deve aplicar backups de registos na ordem em que os criou, sem quaisquer lacunas na cadeia de registos.
Para mais informações sobre cópias de segurança de registos de transações, consulte Cópias de segurança de registos de transações e Aplicar Cópias de Segurança de Registo de Transações.
Permissões
Para uma base de dados existente, RESTORE as permissões são atribuídas por defeito aos membros dos papéis fixos do servidor sysadmin e dbcreator e ao proprietário (dbo) da base de dados.
RESTORE As permissões vão para funções cujos membros o servidor pode sempre verificar. O servidor só pode verificar a pertença a uma função fixa da base de dados quando a base de dados está acessível e intacta, o que nem sempre é verdade quando RESTORE está em execução. Por esta razão, os membros da função fixa da base de dados db_owner não têm RESTORE permissões.
Remarks
Para uma base de dados espelhada, ou uma base de dados secundária de grupo de disponibilidade que ainda não se juntou ao grupo de disponibilidade, restaure a última cópia de segurança do log com a NORECOVERY opção (-NoRecovery no PowerShell). A base de dados deve permanecer no estado de restauro.
Para uma base de dados secundária de envio de logs, restaure o último backup de log com a NORECOVERY opção ou a STANDBY opção (-StandbyFile no PowerShell). A STANDBY opção dá acesso apenas de leitura à base de dados entre operações de restauro.
Utilize SQL Server Management Studio
Advertência
Numa restauração típica, selecionam-se as cópias de segurança dos registos juntamente com as cópias de segurança de dados e diferenciais na caixa de diálogo Restaurar Base de Dados.
Ligue-se à instância apropriada do Mecanismo de Banco de Dados do SQL Server. No Object Explorer, selecione o nome do servidor para expandir a árvore do servidor.
Expanda Bases de dados. Selecione uma base de dados de utilizadores, ou expanda as Bases de Dados do Sistema e selecione uma base de dados do sistema.
Clique com o botão direito na base de dados, aponte para Tarefas, aponte para Restaurar e depois selecione Registo de Transações. A caixa de diálogo Restaurar Registo de Transações abre-se.
Observação
Se o Registo de Transações não estiver disponível, pode ser necessário restaurar primeiro um backup completo ou diferencial. Utilize a caixa de diálogo Restaurar Base de Dados.
Na página Geral , na caixa de lista Base de Dados , selecione a base de dados. A lista mostra apenas bases de dados no estado de restauro.
Para especificar a origem e localização dos conjuntos de backup a restaurar, selecione uma das seguintes opções:
De backups anteriores do banco de dados
Selecione a base de dados a restaurar na lista pendente. A lista contém apenas bases de dados com backups registados no histórico de cópias de segurança do msdb.
De arquivo ou fita
Selecione o botão de navegar (...) para abrir a caixa de diálogo Selecionar dispositivos de backup . Na caixa Tipo de suporte de cópia de segurança, selecione um tipo de dispositivo. Para adicionar um ou mais dispositivos à caixa Suportes de cópia de segurança, selecione Adicionar.
Depois de adicionares os dispositivos que queres, seleciona OK para voltar à página Geral .
No Selecione os backups de log de transações para restaurar grade, selecione os backups a serem restaurados. A grelha lista as cópias de segurança dos registos de transações disponíveis para a base de dados selecionada. A grelha lista backups de registos pela ordem dos números de sequência log (LSNs) que contêm, e deve restaurá-los nesta ordem.
A tabela a seguir lista os cabeçalhos de coluna da grade e descreve seus valores.
Cabeçalho Valor Restaurar As caixas de verificação selecionadas indicam os conjuntos de cópia de segurança a restaurar. Nome Nome do conjunto de backup. Componente Componente de backup: Banco de dados, Arquivo, ou <> em branco (para logs de transações). Base de Dados Nome do banco de dados envolvido na operação de backup. Data de início Data e hora em que a operação de backup começou, apresentada na configuração regional do cliente. Data de término Data e hora em que a operação de backup terminou, apresentada na configuração regional do cliente. Primeiro LSN Número de sequência de log da primeira transação no conjunto de backup. Campo vazio para cópias de segurança. Última LSN Número de seqüência de log da última transação no conjunto de backup. Campo vazio para cópias de segurança. LSN do posto de controlo Número de sequência de log do ponto de verificação mais recente no momento em que o backup foi criado. LSN completo Número de seqüência de log do backup completo de banco de dados mais recente. Servidor Nome da instância do Mecanismo de Banco de Dados que executou a operação de backup. Nome de Utilizador Nome do usuário que executou a operação de backup. Tamanho Tamanho do conjunto de backup em bytes. Posição Posição do conjunto de backup no volume. Expiração Data e hora em que o conjunto de backup expira. Selecione uma das seguintes opções:
Ponto no tempo
Mantenha o padrão (Mais recente possível) ou selecione o botão de navegar para abrir a caixa de diálogo Restauro a um Ponto no Tempo e selecione uma data e hora específicas.
Transação marcada
Restaure o banco de dados para uma transação marcada anteriormente. Esta opção abre a caixa de diálogo Selecionar Transação Marcada. A grelha nesta caixa de diálogo lista as transações marcadas nas cópias de segurança selecionadas do registo de transações.
Por defeito, a operação de restauro vai até, mas exclui, a transação marcada. Para incluir a transação marcada na restauração, selecione Incluir transação marcada.
A tabela a seguir lista os cabeçalhos de coluna da grade e descreve seus valores.
Cabeçalho Valor <em branco> Exibe uma caixa de seleção para selecionar a marca. Marca de transação Nome da transação marcada especificada pelo usuário quando a transação foi confirmada. Data Data e hora da transação quando foi confirmada. A data e hora da transação são apresentadas conforme registadas na tabela logmarkhistory no msdb, e não na data e hora do computador cliente. Descrição Descrição da transação marcada, se existir, especificada pelo utilizador quando a transação foi confirmada. LSN Número de sequência de log da transação marcada. Base de Dados Nome do banco de dados onde a transação marcada foi confirmada. Nome de Utilizador Nome do usuário do banco de dados que confirmou a transação marcada.
Para exibir ou selecionar as opções avançadas, selecione Opções no painel Selecionar uma página.
Na secção de opções de restauro , selecione entre as seguintes opções:
Preservar as definições de replicação (WITH KEEP_REPLICATION)
Preserva as definições de replicação ao restaurar uma base de dados publicada para um servidor diferente daquele onde a base de dados foi criada.
Esta opção está disponível apenas com a opção Deixar a base de dados pronta para uso ao reverter transações não comprometidas... (descrita mais adiante), que equivale a restaurar uma cópia de segurança com a opção RECOVERY .
Selecionar esta opção equivale a usar a opção KEEP_REPLICATION numa declaração Transact-SQL RESTORE .
Avisar antes de restaurar cada cópia de segurança
Antes de cada cópia de segurança após a primeira, esta opção abre a caixa de diálogo Continuar com o Restauro, que pergunta se quer continuar a sequência de restauração. A caixa de diálogo mostra o nome do próximo conjunto de media (se disponível), o nome do conjunto de backup e a descrição do conjunto de backup.
Esta opção é especialmente útil quando é necessário trocar fitas por diferentes conjuntos de suportes, por exemplo, quando o servidor tem apenas um dispositivo de fita. Selecione OK apenas quando estiver pronto para continuar.
Se selecionares Não, a base de dados mantém-se no estado de restauração. Podes continuar a sequência de restauração mais tarde, a partir da última restauração que já foi concluída. Se o próximo backup for um backup diferencial ou de dados, use a tarefa Restaurar Banco de Dados novamente. Se o próximo backup for um backup de log, use a tarefa Restaurar Log de Transações.
Restringir o acesso ao banco de dados restaurado (COM RESTRICTED_USER)
Torna o banco de dados restaurado disponível apenas para os membros do db_owner, dbcreatorou sysadmin.
Selecionar esta opção equivale a usar a opção RESTRICTED_USER numa declaração Transact-SQL RESTORE .
No estado de recuperação, especifique o estado da base de dados após a operação de restauro.
Deixe o banco de dados pronto para uso revertendo transações não confirmadas. Registos adicionais de transações não podem ser restaurados. (RESTORE COM RECUPERAÇÃO)
Recupera o banco de dados. Esta opção é equivalente à opção RECOVERY numa declaração Transact-SQL RESTORE.
Escolha esta opção apenas se não tiver outros backups de registos para restaurar.
Deixa a base de dados inoperacional e não revertas transações não confirmadas. Logs de transações adicionais podem ser restaurados. (RESTORE SEM RECUPERAÇÃO)
Deixa o banco de dados não recuperado, no estado de RESTAURANDO. Esta opção é equivalente a usar a opção NORECOVERY numa instrução Transact-SQL RESTORE.
Quando escolhes esta opção, a opção Preservar as definições de replicação não está disponível.
Deixe o banco de dados no modo somente leitura. Desfazer transações não confirmadas, mas guardar as ações de desfazer num ficheiro para que os efeitos de recuperação possam ser anulados. (RESTORE COM MODO DE ESPERA)
Deixa o banco de dados em estado de espera. Esta opção é equivalente a usar a opção STANDBY numa instrução Transact-SQL RESTORE .
Esta opção requer um ficheiro de standby.
Se deixar a base de dados em modo apenas de leitura, especifique um nome de ficheiro de espera na caixa de texto Ficheiro de espera. Pode procurar o ficheiro em espera ou escrever o seu caminho na caixa de texto.
Utilize o Transact-SQL
Importante
Para evitar ambiguidades, especifique explicitamente WITH NORECOVERY ou WITH RECOVERY em cada instrução RESTORE, especialmente em scripts.
Para cada backup do log de transações antes do último na sua sequência de restauro, execute uma
RESTORE LOGinstrução com os seguintes valores:- O nome da base de dados à qual aplicar o registo de transações.
- O dispositivo de backup que contém o backup do registo de transações.
- A cláusula
NORECOVERY.
O exemplo seguinte mostra a sintaxe básica, onde
<database_name>é o nome da base de dados e<backup_device>é o nome do dispositivo que contém a cópia de segurança do log.RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY [ ; ]Se a tua sequência de restauro tiver apenas uma cópia de segurança de log, salta este passo.
Para a última cópia de segurança do log na sua sequência de restauro, utilize um dos seguintes métodos para recuperar a base de dados:
Recupere a base de dados como parte da última instrução
RESTORE LOG:RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY; GORecupere a base de dados mais tarde, com uma instrução separada
RESTORE DATABASE:RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY; RESTORE DATABASE <database_name> WITH RECOVERY; GOA base de dados mantém-se no estado de restauração após a última
RESTORE LOGinstrução. Podes verificar se restauraste todos os backups de registos necessários e depois recuperar a base de dados. Esta abordagem é frequentemente útil para uma restauração pontual no tempo.
Exemplos (Transact-SQL)
Por padrão, o banco de dados AdventureWorks2025 usa o modelo de recuperação simples. Os exemplos seguintes exigem backups feitos sob o modelo de recuperação total. Antes de criar esses backups, execute a seguinte instrução para alterar o modelo de recuperação:
ALTER DATABASE AdventureWorks2025
SET RECOVERY FULL;
A mudança para o modelo de recuperação total só entra em vigor após a primeira cópia de segurança dos dados. Faz uma cópia de segurança completa da base de dados para iniciar a cadeia de registos.
Os exemplos seguintes restauram as cópias de segurança para uma instância onde a AdventureWorks2025 base de dados não existe, como um servidor diferente.
Um. Aplicar um backup único do registo de transações
O exemplo seguinte restaura a AdventureWorks2025 base de dados a partir de uma cópia de segurança completa num dispositivo de backup chamado AdventureWorks2025_1. Depois, aplica o primeiro backup do log de transações a partir de um dispositivo de backup chamado AdventureWorks2025_log. Finalmente, recupera a base de dados.
RESTORE DATABASE AdventureWorks2025
FROM AdventureWorks2025_1
WITH NORECOVERY;
GO
RESTORE LOG AdventureWorks2025
FROM AdventureWorks2025_log
WITH FILE = 1,
NORECOVERY;
GO
RESTORE DATABASE AdventureWorks2025
WITH RECOVERY;
GO
B. Aplicar múltiplos backups de registos de transações
O exemplo seguinte restaura a AdventureWorks2025 base de dados a partir de uma cópia de segurança completa num dispositivo de backup chamado AdventureWorks2025_1. De seguida, aplicam-se, um a um, as primeiras três cópias de segurança do registo de transações a partir de um dispositivo de backup chamado AdventureWorks2025_log. Finalmente, recupera a base de dados.
RESTORE DATABASE AdventureWorks2025
FROM AdventureWorks2025_1
WITH NORECOVERY;
GO
RESTORE LOG AdventureWorks2025
FROM AdventureWorks2025_log
WITH FILE = 1,
NORECOVERY;
GO
RESTORE LOG AdventureWorks2025
FROM AdventureWorks2025_log
WITH FILE = 2,
NORECOVERY;
GO
RESTORE LOG AdventureWorks2025
FROM AdventureWorks2025_log
WITH FILE = 3,
NORECOVERY;
GO
RESTORE DATABASE AdventureWorks2025
WITH RECOVERY;
GO
Utilize o PowerShell
Utilize o cmdlet Restore-SqlDatabase e defina o parâmetro -RestoreAction para Log. Inclua o -NoRecovery parâmetro para cada restauração na sequência, exceto a última. Omita -NoRecovery na última restauração do registo para recuperar a base de dados.
Observação
Estes exemplos requerem o SqlServer módulo. Para obter mais informações, consulte SQL Server PowerShell Provider.
Para a sintaxe completa, veja Restore-SqlDatabase.
Exemplos (PowerShell)
Os exemplos seguintes restauram as cópias de segurança para uma instância onde a AdventureWorks2025 base de dados não existe, como um servidor diferente.
Um. Restaurar uma única cópia de segurança do registo de transações
O exemplo seguinte restaura a AdventureWorks2025 base de dados a partir de uma cópia de segurança completa, deixando a base de dados no estado de restauração. Depois, aplica uma cópia de segurança do registo de transações e recupera a base de dados.
$instance = "Computer\Instance"
$fullRestore = @{
ServerInstance = $instance
Database = "AdventureWorks2025"
BackupFile = "C:\Backup\AdventureWorks2025_full.bak"
RestoreAction = "Database"
NoRecovery = $true
}
Restore-SqlDatabase @fullRestore
$logRestore = @{
ServerInstance = $instance
Database = "AdventureWorks2025"
BackupFile = "C:\Backup\AdventureWorks2025_log1.trn"
RestoreAction = "Log"
}
Restore-SqlDatabase @logRestore
B. Aplicar múltiplos backups de registos de transações
O exemplo seguinte restaura a cópia de segurança completa da base de dados e depois aplica três backups de registos de transações em sequência. Todas as restaurações, exceto a última, usam -NoRecovery, por isso a última restauração do log recupera a base de dados.
$instance = "Computer\Instance"
$logBackups = @(
"C:\Backup\AdventureWorks2025_log1.trn",
"C:\Backup\AdventureWorks2025_log2.trn",
"C:\Backup\AdventureWorks2025_log3.trn"
)
$fullRestore = @{
ServerInstance = $instance
Database = "AdventureWorks2025"
BackupFile = "C:\Backup\AdventureWorks2025_full.bak"
RestoreAction = "Database"
NoRecovery = $true
}
Restore-SqlDatabase @fullRestore
for ($i = 0; $i -lt $logBackups.Count; $i++) {
$isLast = ($i -eq $logBackups.Count - 1)
$logRestore = @{
ServerInstance = $instance
Database = "AdventureWorks2025"
BackupFile = $logBackups[$i]
RestoreAction = "Log"
NoRecovery = -not $isLast
}
Restore-SqlDatabase @logRestore
}
Tarefas relacionadas
- Fazer backup de um log de transações
- restaurar um backup de banco de dados usando o SSMS
- Restaurar banco de dados para ponto de falha - recuperação completa
- Restaurar um banco de dados do SQL Server para um ponto no tempo (Modelo de Recuperação Completa)
- Restaurar um banco de dados para uma transação marcada (SQL Server Management Studio)