无法从完全备份还原SQL Server数据库,日志处理失败,数据库处于“还原”状态


14

我试图在我的PC的本地SQL Server Developer Edition 12.0.2000.8上建立数据库以用于开发目的。我有完整的数据库备份和单独的仅事务日志备份文件,这些文件是通过网络发送给我的。

尝试从完全备份还原时,经过一段时间(大约1个小时,数据库的大小约为270 GB),出现错误:

System.Data.SqlClient.SqlError:处理数据库“数据库名称”的日志时发生错误。如果可能,请从备份中还原。如果没有备份,则可能有必要重建日志。(Microsoft.SqlServer.SmoExtended)

此后,数据库处于“正在还原..”状态。

我想运行类似的东西(从这个问题中得到它)

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;

针对它,但是自然地我不能,因为数据库处于'Restoring ..'状态。在数据库上重新启动还原过程会导致相同的错误消息,再次删除和还原也无济于事。

如何启动数据库并正常工作?事务的一致性对我来说并不重要。

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

@Craig Efrein建议的查询结果

无法重建日志,因为关闭数据库时有打开的事务/用户,数据库没有检查点,或者数据库是只读的。如果由于硬件或环境故障而手动删除或丢失了事务日志文件,则可能会发生此错误。


评论不作进一步讨论;此对话已转移至聊天
保罗·怀特9

Answers:


2

从评论移至聊天室,此注释来自OP:

我只是尝试通过GUI附加它。当我选择.mdf文件时,SSMS识别出数据库由3个文件(数据,索引,日志)组成,但是无论如何,即使我正在恢复MOVE,有关文件路径的数据库详细信息都在说错了!因此,我只是将它们指向旧的日志/数据/索引文件,然后...数据库处于联机状态。


-3

更改为单用户模式并还原。

示例:
第一次还原使用NORECOVERY选项,因此可以进行其他还原。第二个命令还原事务日志,然后使数据库联机以供最终用户使用。

RESTORE DATABASE AdventureWorks FROM DISK = 'C:\AdventureWorks.BAK'
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.TRN'
WITH RECOVERY
GO

1
该问题引用单个RESTORE DATABASE语句,没有完成单独的事务日志还原。源数据库和/或备份文件很可能已损坏。
布赖恩
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.