Имя: Пароль:
1C
1С v8
Как исправить ошибку БД MS SQL
,
0 maxt
 
02.03.12
10:50
после тестирования DBCC CHECKDB ('myDB', REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS

Вышла такая ошибка:

Ошибка в таблице: таблица "sys.sysiscols" (идентификатор 55). Для строки данных отсутствует совпадающая строка в индексе "nc1" (идентификатор 2). Возможно, ключи для сопоставления строк индекса отсутствуют или недопустимы:
       Не удалось исправить эту ошибку.
Сообщение 8955, уровень 16, состояние 1, строка 1
Строка данных (1:10616:51), определенная (idmajor = 59251366 and subid = 1 and idminor = 51) со значениями индекса "idmajor = 59251366 and intprop = 47 and subid = 1 and idminor = 51".
Сообщение 8951, уровень 16, состояние 1, строка 1
Ошибка в таблице: таблица "sys.sysiscols" (идентификатор 55). Для строки данных отсутствует совпадающая строка в индексе "nc1" (идентификатор 2). Возможно, ключи для сопоставления строк индекса отсутствуют или недопустимы:
       Не удалось исправить эту ошибку.
Сообщение 8955, уровень 16, состояние 1, строка 1
Строка данных (1:10616:52), определенная (idmajor = 59251366 and subid = 1 and idminor = 52) со значениями индекса "idmajor = 59251366 and intprop = 37 and subid = 1 and idminor = 52".
Имеется 11466 строк на 81 страницах для объекта "sys.sysiscols".
CHECKDB обнаружил 0 ошибок размещения и 2 ошибок согласованности в таблице "sys.sysiscols" (идентификатор объекта 55).

Как ее можно исправить? Бд MS SQL 2008R2
1 Жан Пердежон
 
02.03.12
10:55
индекс перестроить
2 maxt
 
02.03.12
10:56
(1) подскажите, как? я не админ
3 adron
 
02.03.12
11:00
4 Жан Пердежон
 
02.03.12
11:01
5 maxt
 
02.03.12
11:24
(3,4) спасибо, буду пробовать!
6 упс
 
02.03.12
11:25
У этой таблицы индекс вы не перестроите. Или обращайтесь в MS за помощью, или выгружайте базу в dt и загружайте в новую. И делайте проверки CHECKDB регулярно, чтобы своевременно узнавать о повреждениях.
Ну или забейте вообще, если база в SUSPECT не упала. Правда неизвестно когда и как эта ошибка может выстрелить.
7 упс
 
02.03.12
11:25
и зачем вы сразу выполняете checkdb с repair_allow_data_loss?
8 maxt
 
02.03.12
11:33
(7) я сначала делал с парметром repair_rebuild, он не все ошибки исправил
порекомендовали с параметром repair_allow_data_loss

(6) выгрузку сделать не получается... точно нельзя исправить?
9 упс
 
02.03.12
11:47
(8) если бы ошибка была в пользовательской таблице, ее было бы очень легко исправить, увы.
К это таблице обратиться-то можно, только подключившись по DAC. А индекс перестроить не дает - я попробовал.
Если у вас полная модель восстановления, вы не делаете переходы в простую модель восстановления и обратно, регулярно делаете НОРМАЛЬНЫЕ бэкапы журнала транзакций - можно попробовать восстановить последний полный бэкап и протестировать его - если все ок, то сделать копию "хвоста" лога и перейти на копию без потери данных.

Если хоть одно из перечисленных условий не выполняется - обращайтесь в поддержку MS.
10 maxt
 
02.03.12
11:50
(9) нда... спасибо за пояснения.
бэкап полный вроде есть, надо будет его протестить.

Не подскажите еще, из-за чего может возникать такая ошибка? у меня подозрение на HDD, т.к. в винде в журнале ошибок нет
11 упс
 
02.03.12
11:54
(10) может быть из-за hdd, точно не скажу
Подумайте, все-таки, на счет dt. Данные-то у вас в порядке должны быть, т.е. должны выгрузиться нормально.

Вот тут: http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=151460 при повреждении еще одной таблицы из списка "System base tables" (http://msdn.microsoft.com/en-us/library/ms179503.aspx ) пишут, что единственный выход - скриптовать все таблицы и выгружать данные.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший