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

Откуда:
Сообщений: 3
БД вроде рабочая, но только "вроде".
Команда
dbcc checkdb('dbname')
отработала следующим образом:

Сообщение 8921, уровень 16, состояние 1, строка 1
Проверка отменена. В процессе сбора фактов была обнаружена ошибка. Возможно, база данных tempdb достигла предела памяти, или системная таблица не согласована. Проверьте предыдущие ошибки.

Пробовал восстановить с различными опциями, но даже это:

exec sp_dboption 'dbname', 'single_user', 'true'
dbcc checkdb('dbname', repair_allow_data_loss)

не помогло (то же самое сообщение):

Сообщение 8921, уровень 16, состояние 1, строка 3
Проверка отменена. В процессе сбора фактов была обнаружена ошибка. Возможно, база данных tempdb достигла предела памяти, или системная таблица не согласована. Проверьте предыдущие ошибки.

В каком направлении смотреть/копать? Среда выполнения MSSQL Server 2008 R2 Express.
Буду признателен за любые подсказки/намеки/толчки в правильном направлении
14 ноя 15, 12:58    [18416599]     Ответить | Цитировать Сообщить модератору
 Re: Легла БД. Как оживить?  [new]
Glory
Member

Откуда:
Сообщений: 104751
alexs_sid
В каком направлении смотреть/копать?

В сообщение говорится лишь о том, что команде проверки не хватило ресурсов.
Почему вы вообще решили, что ваша база "легла" ?
14 ноя 15, 13:53    [18416768]     Ответить | Цитировать Сообщить модератору
 Re: Легла БД. Как оживить?  [new]
alexs_sid
Member

Откуда:
Сообщений: 3
Glory
В сообщение говорится лишь о том, что команде проверки не хватило ресурсов.
Почему вы вообще решили, что ваша база "легла" ?


Потому как такая же БД (с аналогичной структурой, но имеющая размер даже больше) другого предприятия подобную проверку на этом же сервере проходит "на ура". Кроме того размер tempdb сущие пустяки - пара-тройка мегабайтов и ее рост, разумеется, не ограничен. Свободного места на диске тоже достаточно.
14 ноя 15, 16:19    [18417272]     Ответить | Цитировать Сообщить модератору
 Re: Легла БД. Как оживить?  [new]
invm
Member

Откуда: Москва
Сообщений: 9646
https://support.microsoft.com/en-us/kb/960791
14 ноя 15, 16:41    [18417346]     Ответить | Цитировать Сообщить модератору
 Re: Легла БД. Как оживить?  [new]
Glory
Member

Откуда:
Сообщений: 104751
alexs_sid
Потому как такая же БД (с аналогичной структурой, но имеющая размер даже больше) другого предприятия подобную проверку на этом же сервере проходит "на ура".

Хороший ответ
А с базой то что ?
14 ноя 15, 17:39    [18417559]     Ответить | Цитировать Сообщить модератору
 Re: Легла БД. Как оживить?  [new]
flexgen
Member

Откуда: Город на песке
Сообщений: 832
alexs_sid
БД вроде рабочая, но только "вроде".
Команда
dbcc checkdb('dbname')
отработала следующим образом:

Сообщение 8921, уровень 16, состояние 1, строка 1
Проверка отменена. В процессе сбора фактов была обнаружена ошибка. Возможно, база данных tempdb достигла предела памяти, или системная таблица не согласована. Проверьте предыдущие ошибки.

Пробовал восстановить с различными опциями, но даже это:

exec sp_dboption 'dbname', 'single_user', 'true'
dbcc checkdb('dbname', repair_allow_data_loss)

не помогло (то же самое сообщение):

Сообщение 8921, уровень 16, состояние 1, строка 3
Проверка отменена. В процессе сбора фактов была обнаружена ошибка. Возможно, база данных tempdb достигла предела памяти, или системная таблица не согласована. Проверьте предыдущие ошибки.

В каком направлении смотреть/копать? Среда выполнения MSSQL Server 2008 R2 Express.
Буду признателен за любые подсказки/намеки/толчки в правильном направлении


Если верить вот этому - Possibly tempdb out of space то не мешало бы проверить состояние базы tempdb, свободное место на диске, на котором она сидит, а так же ограничение на увеличение файлов базы tempdb.
14 ноя 15, 18:04    [18417653]     Ответить | Цитировать Сообщить модератору
 Re: Легла БД. Как оживить?  [new]
alexs_sid
Member

Откуда:
Сообщений: 3
Glory
Хороший ответ
А с базой то что ?


Интересно, да? Оказалась битой всего лишь одна таблица (из более чем 1000 таблиц). Обычный select * from ... по этой таблице выдавал вот такой результат:

Сообщение 0, уровень 11, состояние 0, строка 0
При выполнении текущей команды возникла серьезная ошибка.. При наличии результатов они должны быть аннулированы.
Сообщение 0, уровень 20, состояние 0, строка 0
При выполнении текущей команды возникла серьезная ошибка.. При наличии результатов они должны быть аннулированы.

Битая таблица была выявлена при попытке экспортировать все данные в новую БД-пустышку. Так что теперь (после локализации проблемы) вижу два возможных пути решения:

1. Попытаться восстановить таблицу в оригинальной БД или
2. То же самое сделать в новой БД + восстановить все представления, stored-procedure и т.д.

Но это уже решаемая задача.
Всех откликнувшихся и неравнодушных благодарю за внимание. Данную тему считаю закрытой.
14 ноя 15, 18:29    [18417778]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить