воскресенье, 21 февраля 2010 г.

Как восстановить базы данных без лога *.ldf

Как восстановить базы данных без лога *.ldf

1. Создаем новую базу с таким же именем и такими же по именам и расположению .mdf и .ldf файлами

2. Останавливаем сервер, подменяем файл .mdf

3. Стартуем сервер, не обращаем внимания на статус базы

4. Из "Query Analyzer" выполняем скрипт:

SQL
Use master
go
sp_configure 'allow updates', 1
reconfigure with override
go


4. Там же выполняем:
SQL
select status from sysdatabases where name = ''


и запоминаем/записываем значение на случай неудачи ребилда лога.

5. Там же выполняем:
SQL
update sysdatabases set status= 32768 where name = ''


6. Перезапускаем SQL Server.

7. В принципе база должна быть видна (в emergency mode). Можно, например, заскриптовать все объекты.

8. Из "Query Analyzer" выполняем:
SQL
DBCC REBUILD_LOG('', '<имя нового лога с указанием полного пути>')

SQL Server скажет - Warning: The log for database '' has been rebuilt.


9. Если все нормально, то там же выполняем:
SQL
Use master
go
sp_dboption '', 'single_user', 'true'
go
USE
GO
DBCC CHECKDB('', REPAIR_ALLOW_DATA_LOSS)
go


9a.
Если Вам не удалось перевести базу в single user mode, то для проверки целостности данных можно попробовать dbo only mode
sp_dboption '', 'dbo use only', 'true'

10. Если все в порядке, то:
SQL
sp_dboption '', 'single_user', 'false'
go
Use master
go
sp_configure 'allow updates', 0
go

Комментариев нет:

Отправить комментарий