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

Новое восстановление базы данных SQL Server работает в большинстве случаев, но иногда не работает

Я работаю над автоматической настройкой Windows Server 2008 R2 Core с IIS и SQL Express

Я начинаю со свежей (только что установленной) ОС на виртуальной машине (в данном случае - virtualBox).

Затем мои сценарии создают пользователей, устанавливают dot.NET 3.51 и 4, IIS и SQL-Server 2008 R2 Express. Еще они создают сайты и сервисы, все в порядке.

В какой-то момент мне нужно восстановить шесть баз данных SQL-Server, файлы .bak с одной полной резервной копией в них.

Я использую что-то вроде этого:

RESTORE DATABASE FooBar FROM  DISK = N'E:\temp\db\FooBar.bak' WITH  FILE = 1,  NOUNLOAD,  REPLACE,  STATS = 10

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

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

Когда я удаленно подключаюсь к серверу в Management Studio и запускаю тот же SQL, он обычно не работает, однако, когда я выполняю восстановление вручную в SSMS, это обычно работает.

Что меня сбивает с толку, так это то, что хотя sql-среда всегда одна и та же, восстановление иногда работает, а иногда нет.

Вот собственно сообщение об ошибке:

100 percent processed.
Processed 11128 pages for database 'FooBar', file 'FooBar' on file 1.
Processed 3 pages for database 'FooBar', file 'FooBar_log' on file 1.
Msg 9004, Level 21, State 1, Server LAB45, Line 1
An error occurred while processing the log for database 'FooBar'.  If possible,
restore from backup. If a backup is not available, 
it might be necessary to rebuild the log.
Msg 3013, Level 16, State 1, Server LAB45, Line 1
RESTORE DATABASE is terminating abnormally.

Есть идеи, в чем может быть проблема?

Единственная причина, по которой вы можете получить такую ​​ошибку, - это если данные в резервной копии повреждены или файл журнала транзакций поврежден во время записи на диск.

К вашему сведению: SQL Server 2008 R2 не поддерживается в ядре Windows 2008 R2. SQL Server 2012 - это первая редакция, которая поддерживается ядром Windows 2008 R2.

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

Я добавил в операторы восстановления некоторый код T-SQL, чтобы восстановить его только в том случае, если он не удался ранее или не был восстановлен вообще. Таким образом, снова восстанавливаются только базы данных, восстановление которых не удалось.

Странно ...