База данных SQL Server 2008 R2 зависла в режиме восстановления

У меня есть два сервера SQL Server 2008 R2, один для PROD, а другой для аварийного восстановления. Я пытаюсь добавить доставку журналов для базы данных School.

Шаги до сих пор

  • Резервное копирование базы данных школы
  • Восстановите базу данных с помощью пользовательского интерфейса или следующего оператора SQL, т.е.

    Restore database "School" 
    From disk ='t:\Data\School.bak' 
    with NoRecovery
    
  • В результате база данных застряла в режиме восстановления.

  • Если я восстановлю базу данных с помощью

    Restore database "School" 
    From disk ='t:\Data\School.bak' 
    With recovery
    

    Восстановление базы данных завершается, но доставка журнала завершается ошибкой.

  • Я удалил базу данных и заново создал ее, используя

    Restore database "School" 
    From disk ='t:\Data\School.bak' 
    With **NoRecovery** 
    

    но он по-прежнему находится в состоянии Восстановление.

Есть ли способ восстановить базу данных без зависания базы данных в состоянии восстановления.


person user1339913    schedule 15.08.2017    source источник


Ответы (2)


Это кажется мне ожидаемым поведением. Я что-то неправильно понимаю?

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

Вам просто нужно запустить:

RESTORE DATABASE [School] WITH RECOVERY;

Это сообщит SQL Server, что вы закончили, и он завершит восстановление, и больше не будет отображаться как восстановление.

person Bacon Bits    schedule 15.08.2017

Я удалил базу данных и заново создал ее, используя Restore database «School» from disk = 't:\Data\School.bak' с NoRecovery.

вы также должны использовать команду ниже, если у вас нет других журналов

restore database databasename with recovery

дополнительная информация:

Восстановите базу данных с помощью пользовательского интерфейса или следующего оператора SQL, т.е.

в следующий раз попробуйте выдать инструкцию восстановления с помощью tsql, чтобы вы могли узнать статус

restore database databasename from disk="path"
 with stats=5

теперь, если вы хотите узнать подробные сведения о том, где он находится и что он делает, вы можете использовать флаг трассировки, как показано ниже.

dbcc traceon(3004,3605,-1)
GO
  restore database databasename from disk="path"
     with stats=5

этот журнал выводит в журнал ошибок, как показано ниже

2008-01-23 08:59:56.26 spid52 RestoreDatabase: База данных dbPerf_MAIN
2008-01-23 08:59:56.26 spid52 Открытие набора резервных копий
23-01-2008 08:59:56.31 spid52 Восстановление: раздел конфигурации load2008-01-23 08:59:56.31 spid52 Восстановление: резервный набор открыт
2008-01-23 08:59:56.31 spid52 Восстановление: начинается планирование
2008-01-23 08:59:56.32 spid52 Остановка Полнотекстовые обходы базы данных dbPerf_MAIN
23 января 2008 г. 08:59:56.32 spid52 Отключение полнотекстовых каталогов
23 января 2008 г. 08:59:56.32 spid52 X-блокировка базы данных: dbPerf_MAIN
23 января 2008 г. 08:59:56.32 Восстановление spid52: планирование завершено
23-01-2008 08:59:56.32 Восстановление spid52: начало восстановления (в автономном режиме) на dbPerf_MAIN
23-01-2008 08:59:56.40 Восстановление spid52: PreparingContainers 2008 -01-23 08:59:56.43 spid52 Восстановление: контейнеры готовы

Для вашей текущей проблемы вы можете посмотреть журнал событий, так как он будет регистрировать текущую фазу.

Есть ли способ восстановить базу данных без зависания базы данных в состоянии восстановления.

вам нужно будет получить spid резервной копии, увидеть тип ожидания и устранить неполадки соответственно.

select * from sys.dm_Exec_requests where sessionid=backupspid
person TheGameiswar    schedule 15.08.2017
comment
Спасибо за ответ. Восстановление завершается командой восстановления, но могу ли я затем повторно запустить восстановление с командой «Нет восстановления», так как мне нужно включить доставку журналов. - person user1339913; 16.08.2017
comment
вы не можете запустить восстановление с восстановлением, а затем без восстановления - person TheGameiswar; 16.08.2017