SQL Server: база данных застряла в & ldquo; восстановление & rdquo; государство

Я сделал резервную копию базы данных:

BACKUP DATABASE MyDatabase
TO DISK = 'MyDatabase.bak'
WITH INIT --overwrite existing

А затем попытался восстановить ее:

RESTORE DATABASE MyDatabase
   FROM DISK = 'MyDatabase.bak'
   WITH REPLACE --force restore over specified database

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

Некоторые люди теоретизировали, что это потому, что в резервной копии не было файла журнала, и его нужно было перенести, используя:

RESTORE DATABASE MyDatabase
WITH RECOVERY 

За исключением того, что, конечно, происходит сбой:

Msg 4333, Level 16, State 1, Line 1
The database cannot be recovered because the log was not restored.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.

И именно то, что вы хотите в катастрофической ситуации, - это восстановление, которое не будет работать.


Резервная копия содержит данные и файл журнала:

RESTORE FILELISTONLY 
FROM DISK = 'MyDatabase.bak'

Logical Name    PhysicalName
=============   ===============
MyDatabase    C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase.mdf
MyDatabase_log  C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase_log.LDF
545
задан 15.04.2020, 21:26

2 ответа

Необходимо использовать WITH RECOVERY опция, с базой данных RESTORE команда, для обеспечения базы данных онлайн как части процесса восстановления.

Это, конечно, только если Вы не намереваетесь восстановить любые резервные копирования журнала транзакций, т.е. Вы только хотите восстановить резервное копирование базы данных и затем смочь получить доступ к базе данных.

Ваша команда должна быть похожей на это,

RESTORE DATABASE MyDatabase
   FROM DISK = 'MyDatabase.bak'
   WITH REPLACE,RECOVERY

Вы можете иметь больше успеха с помощью мастера баз данных восстановления в Studio управления SQL Server. Таким образом, можно выбрать определенное расположение файлов, опцию перезаписи и опцию WITH Recovery.

425
ответ дан 15.04.2020, 21:33
  • 1
    I' ve никогда не должен был использовать оператор восстановления при выполнении того, что он делает. С ЗАМЕНОЙ должен быть достаточным. – Sam 15.04.2020, 21:33
  • 2
    @FistOfFury, Если предыдущая операция восстановления на той же базе данных находится в, приостанавливал/спал состояние тогда да. Просто остановка/отмена в восстановлении процесса должна иметь тот же эффект. – John Sansom 15.04.2020, 21:33
  • 3
    @Patrick: Отправьте новый вопрос. – John Sansom 15.04.2020, 21:34
  • 4
    Это решило мою проблему. У нас был отказ SAN посреди восстановления, и это было быстрым и чистым решением. – Registered User 15.04.2020, 21:34
  • 5
    Да, я использовал NORECOVERY, но процесс восстановления зависает. Используя С ВОССТАНОВЛЕНИЕМ, ЗАМЕНИТЕ его doesn' t больше подвешивают процесс – Junior M 15.04.2020, 21:34

Вы попытались выполнить ПРОВЕРЕНИЕ ТОЛЬКО? Только для проверки это - звуковое резервное копирование.

http://msdn.microsoft.com/en-us/library/ms188902.aspx

1
ответ дан 15.04.2020, 21:30

Теги

Похожие вопросы