Присоединение файла .mdf без файла .ldf

Q.
Проблема.Полетел диск с transaction log.База получили статус suspect.Удалось выполнить detach,а вот attach_single_file_db не проходит.Т.е.попытка присоединить базу (без лога) выдает ошибку

Server: Msg 945, Level 14, State 2, Line 1
Database ‘test1’ cannot be opened because some of the files could not be activated.
Server: Msg 1813, Level 16, State 2, Line 1
Could not open new database ‘test1’. CREATE DATABASE is aborted.

Т.к. присоединяемый файл один (mdf) то это сообщение надо понимать относится непосредственно к нему.
Создание новой базы и подмена испорченной не помогает.
В приниципе у этой проблемы есть решение ?

A.
NB! Данный метод работает только для версии SQL2000

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

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

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

4. Из QA выполняем скрипт

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

4. Там же выполняем

select status from sysdatabases where name = '<db_name>'

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

5.Там же выполняем

update sysdatabases set status= 32768 where name = '<db_name>'

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

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

8. Из QA выполняем

DBCC REBUILD_LOG('<db_name>', '<имя нового лога с указанием полного пути>')

SQL Server скажет — Warning: The log for database ‘<db_name>’ has been rebuilt.

9. Если все нормально, то там же выполняем

Use master
go
sp_dboption '<db_name>', 'single user', 'true'
go
USE <db_name>
GO
DBCC CHECKDB('<db_name>', REPAIR_ALLOW_DATA_LOSS)
go

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

10. Если все в порядке, то

sp_dboption '<db_name>', 'single user', 'false'
go
Use master
go
sp_configure 'allow updates', 0
go
Запись опубликована в рубрике Администрирование. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Solve : *
14 − 4 =