Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 База в состоянии suspect (((  [new]
SkrepkaNK
Member

Откуда:
Сообщений: 55
Жила была база на 2000м скл сервере (MSDE), есть-пить не просила, в общем, была вполне самостоятельной базой, пока однажды не выключили свет.
Теперь имеем базу в состоянии suspect. Бэкапов нет вообще. На этой радостной ноте файлики базы (mdf и ldf) прислали мне.
Поставила 2008 скл сервер, создала базу с такими же путями, остановила скл сервер, подменила файлы, запустила службу.
Вот что лог пишет:
Starting up database 'skif3'.
Error: 3316, Severity: 21, State: 1.
During undo of a logged operation in database 'skif3', an error occurred at log record ID (151792:120:401). The row was not found.
Restore the database from a full backup, or repair the database.
Error: 3314, Severity: 21, State: 1.
During undoing of a logged operation in database 'skif3', an error occurred at log record ID (151792:120:401). Typically, the specific
failure is logged previously as an error in the Windows Event Log service. Restore the database or file from a backup, or repair the database.
Error: 3414, Severity: 21, State: 2.
An error occurred during recovery, preventing the database 'skif3' (database ID 7) from restarting. Diagnose the recovery errors and
fix them, or restore from a known good backup. If errors are not corrected or expected, contact Technical Support.

Решила применить вот такой рецепт:
Use master
sp_configure 'allow updates', 1 reconfigure with override
alter database имябазы set EMERGENCY, SINGLE_USER
DBCC checkdb('имябазы')
DBCC checkdb('имябазы', REPAIR_ALLOW_DATA_LOSS)
alter database имябазы set ONLINE, MULTI_USER
sp_configure 'allow updates', 0 reconfigure with override

База переходит в режим EMERGENCY, но при выполнении "DBCC checkdb('имябазы')" пишет: "Cannot open database 'skif3' version 539. Upgrade the database to the latest version."

Что это за версия базы? Что можно сделать?
8 ноя 11, 12:40    [11562935]     Ответить | Цитировать Сообщить модератору
 Re: База в состоянии suspect (((  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Ненене. Вы базу сначала на 2000м почините, а потом уже 2008й ставьте.
8 ноя 11, 12:41    [11562947]     Ответить | Цитировать Сообщить модератору
 Re: База в состоянии suspect (((  [new]
petsa
Member

Откуда:
Сообщений: 1708
Когда-то давно здесь на форуме нашел. Как раз для 2000. Может поможет.
+
автор
/*Проблема.Полетел диск с 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

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

select status from sysdatabases where name = 'db_name'
и запоминаем/записываем значение на случай неудачи ребилда лога

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

update sysdatabases set status= -32768 where name = 'db_name'

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

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

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

DBCC REBUILD_LOG('db_name', 'имя нового лога с указанием полного пути')
SQL Server скажет - Warning: The log for database 'db_name' has been rebuilt.

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

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

10a.
Если Вам не удалось перевести базу в 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
8 ноя 11, 12:48    [11563015]     Ответить | Цитировать Сообщить модератору
 Re: База в состоянии suspect (((  [new]
SkrepkaNK
Member

Откуда:
Сообщений: 55
Ох, а я надеялась, что обойдётся без переустановки скл сервера. Сейчас поставлю 2000. А sp тоже должны совпадать?
Спасибо!
8 ноя 11, 12:52    [11563039]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить