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.