还原SQL Server 数据库挂了?

Sam*_*Sam 2 restore sql-server-2008

我从 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
Run Code Online (Sandbox Code Playgroud)

这很快就完成了(数据库很小),缩短的输出是这样的:

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).
Run Code Online (Sandbox Code Playgroud)

完成后,数据库在 SQL Server Management Studio 中显示为“正在恢复”。并且它一直这样显示几个小时,没有任何进展。

事件日志包含三条信息消息(此处大致翻译):
1) “MyDatabase”正在启动。
2) “MyDatabase”被标记为 RESTORING 并且处于无法执行恢复的状态。
3)“MyDatabase”恢复成功。

这里发生了什么?从所有消息来看,数据库似乎已恢复,但我无法访问它,它一直被标记为“正在恢复”。

Ste*_*ane 6

您使用了“NORECOVERY”标志,该标志向 SQL 服务器表明您想要恢复额外的 T-log 备份。您应该改用“RECOVERY”标志(或不使用,因为这是默认值)。

要恢复,请恢复丢失的 T 日志,或者,如果您不想恢复更多日志,请发出以下语句:

RESTORE DATABASE [MyDatabase] WITH RECOVERY
Run Code Online (Sandbox Code Playgroud)

它应该使数据库联机。

阅读有关 restore 命令的集成帮助。它确实包含您不能忽视的信息。