Я работаю над автоматической настройкой 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, чтобы восстановить его только в том случае, если он не удался ранее или не был восстановлен вообще. Таким образом, снова восстанавливаются только базы данных, восстановление которых не удалось.
Странно ...