我从 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”已成功恢复。
这是怎么回事?从所有消息来看,数据库似乎已恢复,但我无法访问它,它一直被标记为“正在恢复”。
答案1
您使用了“NORECOVERY”标志,该标志向 SQL 服务器表明您想要恢复额外的 T-log 备份。您应该改用“RECOVERY”标志(或者什么都不用,因为这是默认设置)。
要恢复,请恢复丢失的 T 日志,或者,如果您不想恢复任何日志,请发出以下语句:
RESTORE DATABASE [MyDatabase] WITH RECOVERY
它应该使数据库联机。
阅读有关恢复命令的集成帮助。它确实包含您无法忽略的信息。