Как восстановить базы данных без лога *.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
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 '
9. Если все нормально, то там же выполняем:
SQL
Use master
go
sp_dboption '
go
USE
GO
DBCC CHECKDB('
go
9a.
Если Вам не удалось перевести базу в single user mode, то для проверки целостности данных можно попробовать dbo only mode
sp_dboption '', 'dbo use only', 'true'
10. Если все в порядке, то:
SQL
sp_dboption '
go
Use master
go
sp_configure 'allow updates', 0
go
Комментариев нет:
Отправить комментарий