Назад | Перейти на главную страницу

Восстановление базы данных SQL Server зависает?

Я сделал резервную копию с 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» помечена как ВОССТАНОВЛЕНИЕ и имеет статус, при котором выполнение восстановления невозможно.
3) «Моя база данных» успешно восстановлена.

Что здесь происходит? Судя по всем сообщениям, база данных была восстановлена, но я не могу получить к ней доступ, она по-прежнему помечена как «Восстановление».

Вы использовали флаг «NORECOVERY», который указывает серверу SQL, что вы хотите восстановить дополнительные резервные копии T-log. Вместо этого вы должны были использовать флаг «ВОССТАНОВЛЕНИЕ» (или ничего, поскольку он установлен по умолчанию).

Для восстановления либо восстановите недостающие T-журналы, либо, если вы больше не хотите восстанавливать журналы, выполните следующую инструкцию:

RESTORE DATABASE [MyDatabase] WITH RECOVERY

Это должно привести БД в оперативный режим.

Прочтите встроенную справку по команде восстановления. Он действительно содержит информацию, которую нельзя игнорировать.