Здравствуйте, уважаемые.
Сразу скажу, я 1Сник, с mssql знаком поверхностно.
Прошу помощи в восстановлении БД.
Предыстория. Жила-была БД на 10 sas raid. Контроллер дешевенький, кэш Hdd был не выключен. На соседний сервер настроен logshipping. В один прекрасный день от сервера-приемника logshipping получаем сообщение
1. Could not redo log record (1718035:250:44), for transaction ID (0:807870501), on page (1:4299870), database 'tis103' (database ID 6). Page: LSN = (1717708:15918:51), type = 2. Log: OpCode = 11, context 3, PrevPageLSN: (1716153:4472:2). Restore from a backup of the database, or repair the database.
Полез в логи lohshipping, там нашел сообщение о том, что невозможно восстановить очередной файл журнала, т.к.(в вольном переводе и не помню дословно) файл не является корректным продолжением цепочки.
Что за ошибка я понять не смог, поэтому просто снес logshipping и начал настраивать поновой. В процессе восстановления получаем информацию о том, что полетел один hdd на рабочем сервере и все наглухо зависло, делаем ребут сервера. БАза в suspect, поэтому восстанавливаем копию на начало дня, работаем в ней.
Восстановление DBCC CheckDB ('bitaya', REPAIR_ALLOW_DATA_LOSS) выдает следующее:
Failed to restart the current database. The current database is switched to master.
Msg 5123, Level 16, State 1, Line 3
CREATE FILE encountered operating system error 3(Системе не удается найти указанный путь.) while attempting to open or create the physical file 'L:\tis103_log.ldf'.
Msg 5024, Level 16, State 2, Line 3
No entry found for the primary log file in sysfiles1. Could not rebuild the log.
Msg 5028, Level 16, State 2, Line 3
The system could not activate enough of the database to rebuild the log.
DBCC results for 'bitaya'.
CHECKDB found 0 allocation errors and 0 consistency errors in database 'bitaya'.
Msg 7909, Level 20, State 1, Line 3
The emergency-mode repair failed.You must restore from backup.
Из сообщения вижу, что mssql пытается найти журнал транзакций по старому пути(L: \ tis103_log.ldf), где его конечно же нет, так как базу я подцепил на другом сервере. Подцеплял так: создал БД с именем "bitaya", остановил службу сервера и на место пустых файликов "bitaya.mdf" и "bitaya_log.ldf" положил файлы базы, после чего запустил службу сервера. Пришлось делать так, потому что attach не работал, а копию базы после падения не делали, а просто скопировали файлики mdf и ldf