我从SQL Server 9.0.4053做了一个备份,将bak文件复制到另一台运行SQL Server 10.0.2531的计算机上,并尝试使用
RESTORE DATABASE [MyDatabase] FROM DISK = N'C:\Temp\MyDatabase.bak' WITH FILE = 1, NORECOVERY, REPLACE, STATS = 10
这很快完成(数据库是相当小的),缩短的输出是这样的:
11 Prozent verarbeitet. [...] 100 Prozent verarbeitet. 208 Seiten wurden für die 'MyDatabase'-Datenbank, Datei 'MyDatabase' für Datei 1, verarbeitet. 4 Seiten wurden für die 'MyDatabase'-Datenbank, Datei 'MyDatabase_log' für Datei 1, verarbeitet. RESTORE DATABASE hat erfolgreich 212 Seiten in 1.014 Sekunden verarbeitet (1.631 MB/s).
完成之后,数据库在SQL Server Management Studio中显示为“正在恢复”。 而且它一直持续数小时显示出来,没有任何进展。
事件日志包含三个信息消息(粗略翻译在这里):
1)“MyDatabase”正在开始。
2)“MyDatabase”被标记为RESTORING并且具有不能执行恢复的状态。
3)“MyDatabase”已成功恢复。
这里发生了什么? 从所有消息看来,数据库已经恢复,但我无法访问它,它一直被标记为“恢复”。
您使用“NORECOVERY”标志向SQL Server指示您要恢复其他T-Log备份。 你应该使用“RECOVERY”标志(或者没有,因为这是默认的)。
要恢复,要么恢复丢失的T日志,要么,如果你不想恢复任何更多的日志,发出以下声明:
RESTORE DATABASE [MyDatabase] WITH RECOVERY
它应该使数据库在线。
阅读还原命令的集成帮助。 它确实包含你不能忽视的信息。