Não é possível restaurar o banco de dados do SQL Server a partir do backup completo, o processamento do log falha, o banco de dados no estado 'restaurando'

14

Estou tentando configurar um banco de dados para fins de desenvolvimento no SQL Server Developer Edition 12.0.2000.8 local do meu PC. Eu tenho um backup completo do banco de dados e arquivos separados de backup apenas do log de transações disponíveis, que foram enviados a mim pela rede.

Ao tentar restaurar a partir do backup completo, depois de algum tempo (~ 1 hora, talvez, o banco de dados tem aproximadamente 270 GB), estou recebendo um erro:

System.Data.SqlClient.SqlError: ocorreu um erro ao processar o log do banco de dados 'database name'. Se possível, restaure a partir do backup. Se um backup não estiver disponível, pode ser necessário reconstruir o log. (Microsoft.SqlServer.SmoExtended)

Depois disso, o banco de dados está no estado 'Restaurando ..'.

Eu queria executar algo como (entendi desta pergunta)

ALTER DATABASE recovery_test_2 SET EMERGENCY;
ALTER DATABASE recovery_test_2 SET SINGLE_USER;

DBCC CHECKDB (recovery_test_2, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;

contra isso, mas naturalmente não posso, pois o banco de dados está no estado 'Restaurando ... ". Reiniciar o processo de restauração leva à mesma mensagem de erro, soltar e restaurar novamente também não ajudou.

Como faço para colocar o banco de dados em funcionamento? A consistência transacional não importa para mim.

O script de restauração gerado automaticamente pelo SSMS:

  USE [master]
  RESTORE DATABASE [database_name] FROM  DISK = N'D:\database_name.bak' WITH  FILE = 1,
  MOVE N'database_name' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name.mdf',
  MOVE N'database_name_index' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_index.ndf',
  MOVE N'database_name_log' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_log.ldf',
  NOUNLOAD,
  STATS = 5

  GO

O resultado da consulta sugerida por @Craig Efrein

O log não pode ser reconstruído porque havia transações / usuários abertos quando o banco de dados foi desligado, nenhum ponto de verificação ocorreu no banco de dados ou o banco de dados era somente leitura. Este erro pode ocorrer se o arquivo de log de transações for excluído ou perdido manualmente devido a uma falha de hardware ou ambiente.

evictednoise
fonte
Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
Paul White 9

Respostas:

2

Dos comentários movidos para o bate-papo, esta nota do OP:

Eu apenas tentei anexá-lo via GUI. Quando selecionei o arquivo .mdf, o SSMS identificou o banco de dados composto por 3 arquivos (dados, índice, log), mas de alguma forma, embora eu estivesse restaurando o WITH MOVE, os detalhes do banco de dados sobre o caminho do arquivo estavam dizendo errado! Então, eu apenas apontei para eles no antigo arquivo de log / dados / índice e ... O banco de dados está online.

RDFozz
fonte
-3

Mude para o modo de usuário único e restaure.

exemplo:
a primeira restauração usa a opção NORECOVERY para que restaurações adicionais possam ser feitas. O segundo comando restaura o log de transações e coloca o banco de dados online para uso do usuário final.

RESTORE DATABASE AdventureWorks FROM DISK = 'C:\AdventureWorks.BAK'
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.TRN'
WITH RECOVERY
GO
Maddy
fonte
1
A pergunta faz referência a uma única instrução RESTORE DATABASE, nenhuma restauração de log de transações separada está sendo feita. É provável que o banco de dados de origem e / ou o arquivo de backup estejam corrompidos.
Bryan