|
Ошибка каталога 3853 и правка системной таблицы индексов
|
|||
---|---|---|---|
#18+
CHECKDB выводит сообщение: Код: sql 1.
Версия MS SQL - Standard 13.0.4001.0 (2016 sp1 вроде) Явно похоже на имеющуюся запись об индексе типа HEAP с object_id=2086675623, которая отсутствует в каталоге sys.objects НО даже подключившись через DAC я НЕ нашел записи с таким id в таблице sys.sysindexes этой БД И в других таблицах индексов не нашел такого объекта (sysindexkeys, sys.partitions или index_columns) Код: sql 1.
тоже не срабатывает даже под DAC - но просто пишет "Msg 259, Level 16, State 1, Line 19 Нерегламентированные обновления системных каталогов запрещены." Вопросы: 1. Где можно найти эту запись об объекте 2086675623 и почему оно на него ругается, если я в упор не вижу такой записи? 2. Можно ли в версии 2016 вообще править системные таблицы? Вроде даже с включением "EXEC sp_configure 'allow updates' ,0;" всё равно писало "запрещено" 3. Как понять хотя бы, к какой таблице относится этот индекс, если я его не вижу? CHECKDB с REPAIR_REBUILD делал - не помогло, UPDATE STATISTICS на всех таблицах тоже делал Причина возникновения в целом - сисадмин перенес БД на другой диск, не остановив, и файлы БД похоже разъехались с логами, и вероятно, в момент переноса была создана какая-то временная таблица, которая потом была удалена, а запись об индексе на ней осталась =\ База при этом отлично работает, но бекап не даёт сделать. Не хочется мучаться с переносом всех данных и объектов в другую БД, хотел просто удалить эту мусорную запись из каталога - но не пойму, как удалить то, чего не нашел ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 17:53 |
|
Ошибка каталога 3853 и правка системной таблицы индексов
|
|||
---|---|---|---|
#18+
A0ff, sys.sysindexes - это вьюха на три таблицы если уж ковыряться, то в таблицах смотри Код: sql 1.
апдейтить можно - см ответ номер 2 https://dba.stackexchange.com/questions/192901/how-do-you-directly-modify-the-system-catalogs-in-sql-server-2017 Код: sql 1.
перестало работать с 2005, если память не изменяет ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 18:03 |
|
Ошибка каталога 3853 и правка системной таблицы индексов
|
|||
---|---|---|---|
#18+
komrad, эм... Нашел в sys.sysidxstats запись с таким id А я был уверен, что sys.indexes это системная вьюшка, а sys.sysindexes - это системная таблица =\ ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 18:21 |
|
Ошибка каталога 3853 и правка системной таблицы индексов
|
|||
---|---|---|---|
#18+
Воу-воу Рестартанул весь сервис MS SQL с параметром -m из командной строки Просто подключением DAC через admin:сервер не позволяло, все равно писало Msg 259 Через sqlcmd удалил запись из этой системной таблицы - и оно удалилось =Р Рестартанул опять сервис - подключило Иии... выдало: Msg 8992, Level 16, State 1, Line 1 Проверьте сообщение каталога 3855, состояние 1: Атрибут (lob_data_space_id=1) существует без строки (object_id=2086675623,index_id=0) в sys.indexes. Немного удивило, что при рестарте сервиса через в логе писало, что CHECKDB на этой базе "finished without errors"... но как-то очень быстро, вероятно, не проверяло целостность таки ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 20:01 |
|
Ошибка каталога 3853 и правка системной таблицы индексов
|
|||
---|---|---|---|
#18+
A0ff, Плавно приближаемся к REPAIR_ALLOW_DATA_LOSS Только перед ним имеет смысл остановить сервис, слить копии файлов базы в сторонку, потом запустить сервис и сделать ололо. Такой REPAIR чинит, но LOSS может быть недопустимым. Поэтому копии файлов баз пригодятся для того, чтобы закатывать солнце вручную пообъектным переносом с ручной проверкой целостности. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 20:40 |
|
Ошибка каталога 3853 и правка системной таблицы индексов
|
|||
---|---|---|---|
#18+
REPAIR_ALLOW_DATA_LOSS такое не починил =\ копию данных я уже сделал Позже попробую опять DAC и найти эту запись в каких-то системных таблицах, чтобы удалить. Вероятно, опять в sysidxstats Потому что обычных таблиц с lob_data_space_id=1 у меня нет в БД ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 22:01 |
|
Ошибка каталога 3853 и правка системной таблицы индексов
|
|||
---|---|---|---|
#18+
Пока идей нет =\ Ненавижу MS SQL сервер, хотя и люблю. Надо же было так дебильно выводить сообщения об ошибках... sys.sysindexes - оказывается, это "Системная таблица или функция", которая собирается из трех (четырех) объектов. Но я уже не уверен, что ошибка относится к sys.indexes, а не к чему-то другому. Код: sql 1. 2. 3. 4.
sys.sysidxstats Объект с полями: id indid name status intprop fillfact type tinyprop dataspace lobds rowset sys.syssingleobjrefs Объект с полями: class depid depsubid indepid indepsubid status sys.sysschobjs Объект с полями: id name nsid nsclass status type pid pclass intprop created modified status2 А "TABLE INDEXPROP" это пурга какая-то внутренняя для получения FirstIAM В sys.internal_tables есть поле lob_data_space_id - берется как раз из sys.sysidxstats Но в ней я тоже не нашел упоминания объекта с id=2086675623 В sys.tables есть поле lob_data_space_id Аналогично, не найдено В sys.pdw_nodes_tables это поле не заполняется Хз пока, куда копать с этим Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 02:25 |
|
Ошибка каталога 3853 и правка системной таблицы индексов
|
|||
---|---|---|---|
#18+
A0ff, т.е. никаких мыслей по поводу того, как оно хорошо будет потом эксплуатировать базу данных с покорёженными метаданными не возникает? у Вас там полный контроль над этим? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 04:49 |
|
Ошибка каталога 3853 и правка системной таблицы индексов
|
|||
---|---|---|---|
#18+
С этим 3855 БД уже успешно бекапится, так что основная проблема ушла На копии БД тупо удалил вообще все таблицы, вьюшки и процедуры - БД стала размером 5 Мб, но CHECKDB как и раньше не проходит с этой ошибкой каталога Если кто хочет поэкспериментировать с поиском решения - могу дать бекап )) Копирование БД через детач-аттач ессно не убрало ошибку Так что тут варианта два - либо перенести данные вручную в новую БД, создав объекты и скопировав данные - либо найти косяк в каталоге и через DAC как-то удалить его ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 14:31 |
|
|
start [/forum/topic.php?fid=46&fpage=12&tid=1684219]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 248ms |
total: | 420ms |
0 / 0 |