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

Откуда: Санкт-Петербург
Сообщений: 348
Добрый день, каким образом осуществить пересчет индексов по всем таблицам бд?
9 окт 13, 15:59    [14945877]     Ответить | Цитировать Сообщить модератору
 Re: пересчет индексов по всей базе  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
DBCC DBREINDEXALL
9 окт 13, 16:00    [14945895]     Ответить | Цитировать Сообщить модератору
 Re: пересчет индексов по всей базе  [new]
Glory
Member

Откуда:
Сообщений: 104751
MedBrat
каким образом осуществить пересчет индексов по

А что такое "пересчет индексов" ?
9 окт 13, 16:01    [14945898]     Ответить | Цитировать Сообщить модератору
 Re: пересчет индексов по всей базе  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
Glory, ... перестроение, неверно выразился.

У нас пошли ошибки после аварийного отключения света. Базы поднялись, но началось КВН. Какие манипуляции были в серверной в деталях мне не известно, но... прогнал CHECK DB, имею отчет, которые кишит подобными ошибками

"Ошибка в таблице. Идентификатор объекта 60, идентификатор индекса 1, идентификатор секции 281474980642816, идентификатор единицы распределения 71776119065149440 (тип LOB data) страница (1:641). Проверка (IS_OFF (BUF_IOERR, pBUF->bstat)) не пройдена. Значения равны 2057 и -4.
Сообщение 8928, уровень 16, состояние 1, строка 2"

Имеется 3304 строк на 966 страницах для объекта "sys.sysobjvalues".
CHECKDB обнаружил 0 ошибок размещения и 4 ошибок согласованности в таблице "sys.sysobjvalues" (идентификатор объекта 60).

Пипец? куда копать
9 окт 13, 16:22    [14946075]     Ответить | Цитировать Сообщить модератору
 Re: пересчет индексов по всей базе  [new]
Гость333
Member

Откуда:
Сообщений: 3683
MedBrat
тип LOB data

Тут перестроением индекса никак не поможешь.

MedBrat
Пипец? куда копать

Что с бэкапами?
9 окт 13, 16:25    [14946094]     Ответить | Цитировать Сообщить модератору
 Re: пересчет индексов по всей базе  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
Гость333,

... насколько я услышал админов это и были бэкапы...

как анализировать проблему? можно ли вылечить текущие базы даже с частичной потерей данных?
9 окт 13, 16:27    [14946117]     Ответить | Цитировать Сообщить модератору
 Re: пересчет индексов по всей базе  [new]
Glory
Member

Откуда:
Сообщений: 104751
MedBrat
Пипец? куда копать

Прочитать конечную рекомендацию CHECKDB
9 окт 13, 16:31    [14946149]     Ответить | Цитировать Сообщить модератору
 Re: пересчет индексов по всей базе  [new]
Гость333
Member

Откуда:
Сообщений: 3683
MedBrat
с частичной потерей данных

DBCC CHECKDB (ИмяБазы, REPAIR_ALLOW_DATA_LOSS)
9 окт 13, 16:32    [14946163]     Ответить | Цитировать Сообщить модератору
 Re: пересчет индексов по всей базе  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
Glory,

CHECKDB обнаружил 0 ошибок размещения и 28 ошибок согласованности в базе данных "Proizvodstvo_2".
repair_allow_data_loss - это минимальный уровень исправления для ошибок, найденных DBCC CHECKDB (Proizvodstvo_2).
Выполнение DBCC завершено. Если DBCC выдает сообщения об ошибках, обратитесь к системному администратору.

тип того?
DBCC CHECKDB ('Proizvodstvo_2',repair_allow_data_loss)
9 окт 13, 16:35    [14946190]     Ответить | Цитировать Сообщить модератору
 Re: пересчет индексов по всей базе  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
Гость333,

мы одну базу DBCC CHECKDB ('ROZNICA',repair_rebuid) так вылечили, но я так понимаю, что это самое легкое, что может быть?
9 окт 13, 16:40    [14946237]     Ответить | Цитировать Сообщить модератору
 Re: пересчет индексов по всей базе  [new]
Гость333
Member

Откуда:
Сообщений: 3683
MedBrat,

Да, при REPAIR_REBUILD потеря данных невозможна.
При REPAIR_ALLOW_DATA_LOSS, как следует из самого названия, вполне возможна (для повреждённых БД, разумеется. Хорошие БД эта команда специально не портит ).
9 окт 13, 16:45    [14946316]     Ответить | Цитировать Сообщить модератору
 Re: пересчет индексов по всей базе  [new]
Glory
Member

Откуда:
Сообщений: 104751
MedBrat
тип того?
DBCC CHECKDB ('Proizvodstvo_2',repair_allow_data_loss)

Да

MedBrat
мы одну базу DBCC CHECKDB ('ROZNICA',repair_rebuid) так вылечили, но я так понимаю, что это самое легкое, что может быть?

DBCC CHECKDB НЕ гарантирует "выздоровление". Эта команда будет _пытаться_ исправить ошибки
9 окт 13, 16:58    [14946453]     Ответить | Цитировать Сообщить модератору
 Re: пересчет индексов по всей базе  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
Glory,

а что дает инструкция WITH NO_INFOMSGS
На сайте мелкософта написано, что отключает информационные сообщения. Т.е. остаются только сообщения об ошибках?
16 окт 13, 10:32    [14978329]     Ответить | Цитировать Сообщить модератору
 Re: пересчет индексов по всей базе  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
MedBrat
Glory,

а что дает инструкция WITH NO_INFOMSGS
На сайте мелкософта написано, что отключает информационные сообщения. Т.е. остаются только сообщения об ошибках?

Вы поленились дочитать страницу BOL до конца
BOL
Инструкция DBCC CHECKDB возвращает следующий результирующий набор (сообщение) при указании атрибута NO_INFOMSGS:

The command(s) completed successfully.


Тут написано
16 окт 13, 10:50    [14978434]     Ответить | Цитировать Сообщить модератору
 Re: пересчет индексов по всей базе  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
Knyazev Alexey
DBCC DBREINDEXALL


Еще раз здравствуйте. :) При запуске данной инструкции ругается на повторное значение ключевого поля в таблице sys.sysowners. Судя по описанию таблица "Существует в каждой базе данных. Каждая строка соответствует участнику базы данных." Как может произойти задубливание и как его устранить.
1 ноя 13, 11:07    [15063041]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить