Здравствуйте, подскажите как исправить ошибки в базе SQL? После обновления база нормально не открылась. Через конфигуратор тестирование и исправление прерывается. Проверил базу на ошибки в SQL и попытался исправить, они не исправляются. Проверял так:
Use MyDataBase
GO
DBCC CHECKDB
GO
-------------------------
Use MyDataBase
GO
ALT ER DATABASE MyDataBase SET SINGLE_USER
GO
DBCC CHECKDB('MyDataBase', REPAIR_REBUILD)
GO
А вот список ошибок:
Msg 8952, Level 16, State 1, Line 3
Ошибка в таблице: таблица "sys.sysidxstats" (идентификатор 54). Строке индекса "nc" (идентификатор 2) не соответствует ни одна строка данных. Возможно, существуют лишние или недопустимые ключи для:
Msg 8956, Level 16, State 1, Line 3
Строка индекса (1:109394:49) со значениями (name = '_WA_Sys_00000007_623E9779' and id = 1648269177 and indid = 5), указывающими на строку данных, определяемую по (id = 1648269177 and indid = 5).
Msg 8952, Level 16, State 1, Line 3
Ошибка в таблице: таблица "sys.sysidxstats" (идентификатор 54). Строке индекса "nc" (идентификатор 2) не соответствует ни одна строка данных. Возможно, существуют лишние или недопустимые ключи для:
Msg 8956, Level 16, State 1, Line 3
Строка индекса (1:50406:31) со значениями (name = '_WA_Sys_00000008_623E9779' and id = 1648269177 and indid = 4), указывающими на строку данных, определяемую по (id = 1648269177 and indid = 4).
Msg 8952, Level 16, State 1, Line 3
Ошибка в таблице: таблица "sys.sysidxstats" (идентификатор 54). Строке индекса "nc" (идентификатор 2) не соответствует ни одна строка данных. Возможно, существуют лишние или недопустимые ключи для:
Msg 8956, Level 16, State 1, Line 3
Строка индекса (1:54549:16) со значениями (name = '_WA_Sys_00000005_623E9779' and id = 1648269177 and indid = 6), указывающими на строку данных, определяемую по (id = 1648269177 and indid = 6).
Use MyDataBase
GO
DBCC CHECKDB
GO
-------------------------
Use MyDataBase
GO
ALT ER DATABASE MyDataBase SET SINGLE_USER
GO
DBCC CHECKDB('MyDataBase', REPAIR_REBUILD)
GO
А вот список ошибок:
Msg 8952, Level 16, State 1, Line 3
Ошибка в таблице: таблица "sys.sysidxstats" (идентификатор 54). Строке индекса "nc" (идентификатор 2) не соответствует ни одна строка данных. Возможно, существуют лишние или недопустимые ключи для:
Msg 8956, Level 16, State 1, Line 3
Строка индекса (1:109394:49) со значениями (name = '_WA_Sys_00000007_623E9779' and id = 1648269177 and indid = 5), указывающими на строку данных, определяемую по (id = 1648269177 and indid = 5).
Msg 8952, Level 16, State 1, Line 3
Ошибка в таблице: таблица "sys.sysidxstats" (идентификатор 54). Строке индекса "nc" (идентификатор 2) не соответствует ни одна строка данных. Возможно, существуют лишние или недопустимые ключи для:
Msg 8956, Level 16, State 1, Line 3
Строка индекса (1:50406:31) со значениями (name = '_WA_Sys_00000008_623E9779' and id = 1648269177 and indid = 4), указывающими на строку данных, определяемую по (id = 1648269177 and indid = 4).
Msg 8952, Level 16, State 1, Line 3
Ошибка в таблице: таблица "sys.sysidxstats" (идентификатор 54). Строке индекса "nc" (идентификатор 2) не соответствует ни одна строка данных. Возможно, существуют лишние или недопустимые ключи для:
Msg 8956, Level 16, State 1, Line 3
Строка индекса (1:54549:16) со значениями (name = '_WA_Sys_00000005_623E9779' and id = 1648269177 and indid = 6), указывающими на строку данных, определяемую по (id = 1648269177 and indid = 6).
Прикрепленные файлы:


По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Попробуйте на тестовой копии:
Выполняем:
Пробуем найти ваши _WA_Sys_00000005_623E9779
Если повезет, то найдем что-то типа
_WA_Sys_00000001_11335496 _InfoRgChngR18017NG _NodeTRef
Возможно уже на этом этапе станет понятно, что делать - например, возвернуть в базу колонку и переиндексировать соотв-ю таблицу (последнее шаманство вряд-ли поможет, но...).
Если не помогло, то
1. отключаем AUTO_CREATE_STATISTICS option
2. удаляем автосозданные статистики, т.к. _WA_Sys_ - это они самые
Вот код для создания такого скрипта, я его НЕ проверял:
Проверяем, ежели заработало, то обратно включаем AUTO_CREATE_STATISTICS option
Выполняем:
use ВАША_БАЗА
GO
SEL ECT stat.name AS 'Statistics',
OBJECT_NAME(stat.object_id) AS 'Object',
COL_NAME(scol.object_id, scol.column_id) AS 'Column'
FR OM sys.stats AS stat (NOLOCK) Join sys.stats_columns AS scol (NOLOCK)
ON stat.stats_id = scol.stats_id AND stat.object_id = scol.object_id
INNER JOIN sys.tables AS tab (NOLOCK) on tab.object_id = stat.object_id
WHERE stat.name like '_WA%'
ORDER BY stat.name
ПоказатьПробуем найти ваши _WA_Sys_00000005_623E9779
Если повезет, то найдем что-то типа
_WA_Sys_00000001_11335496 _InfoRgChngR18017NG _NodeTRef
Возможно уже на этом этапе станет понятно, что делать - например, возвернуть в базу колонку и переиндексировать соотв-ю таблицу (последнее шаманство вряд-ли поможет, но...).
Если не помогло, то
1. отключаем AUTO_CREATE_STATISTICS option
2. удаляем автосозданные статистики, т.к. _WA_Sys_ - это они самые
Вот код для создания такого скрипта, я его НЕ проверял:
SELECT DISTINCT 'DROP STATISTICS '
+ QUOTENAME(SCHEMA_NAME(ob.Schema_id)) + '.'
+ QUOTENAME(OBJECT_NAME(s.object_id)) + '.' +
QUOTENAME(s.name) DropStatisticsStatement
FR OM sys.stats s
INNER JOIN sys.Objects ob ON ob.Object_id = s.object_id
WH ERE SCHEMA_NAME(ob.Schema_id) <> 'sys'
AND Auto_Created = 1
ПоказатьПроверяем, ежели заработало, то обратно включаем AUTO_CREATE_STATISTICS option
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот