Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения:SQL Server
Сведения
| Товар | значение |
|---|---|
| Название продукта | SQL Server |
| ИД события | 8992 |
| Источник событий | MSSQLSERVER |
| Компонент | SQLEngine |
| Символическое имя | DBCC3_CHECK_CATALOG |
| Текст сообщения | Проверка сообщения каталога: ошибка уровня [LEVEL], состояние [STATE]: MESSAGE. |
Примечание.
8992. Сообщение об ошибке ссылается на другое конкретное сообщение (от 3851 до 3858) о фактической несогласованности.
Описание
DBCC CHECKCATALOG или DBCC CHECKDB обнаружил несоответствие в таблицах системных метаданных для указанного объекта. То есть существует несоответствие между записанным идентификатором объекта и объектом, указанным в сообщении об ошибке.
Эта ошибка может возникать при обновлении одной или нескольких системных таблиц вручную, что создает несоответствие в системных метаданных. Например, можно вручную удалить объект из sysobjects таблицы без удаления связанных строк в других таблицах, таких как sysindexes и syscolumns.
Эта ошибка может возникать при выполнении DBCC CHECKDB базы данных, которая была обновлена с SQL Server 2000 (8.x) до более поздней версии SQL Server. В SQL Server 2000 (8.x) DBCC CHECKDB не включал DBCC CHECKCATALOG функции, поэтому ошибка не перехватывалась перед обновлением, если DBCC CHECKCATALOG только не выполняется в базе данных в SQL Server 2000 (8.x).
Вы можете увидеть любую из следующих ошибок вместе с ошибкой 8992:
| Идентификатор сообщения | Текст сообщения |
|---|---|
3851 |
An invalid row (%ls) was found in the system table sys.%ls%ls. |
3852 |
Row (%ls) in sys.%ls%ls does not have a matching row (%ls) in sys.%ls%ls. |
3853 |
Attribute (%ls) of row (%ls) in sys.%ls%ls does not have a matching row (%ls) in sys.%ls%ls. |
3854 |
Attribute (%ls) of row (%ls) in sys.%ls%ls has a matching row (%ls) in sys.%ls%ls that is invalid. |
3855 |
Attribute (%ls) exists without a row (%ls) in sys.%ls%ls. |
3856 |
Attribute (%ls) exists but should not for row (%ls) in sys.%ls%ls. |
3857 |
The attribute (%ls) is required but is missing for row (%ls) in sys.%ls%ls. |
3858 |
The attribute (%ls) of row (%ls) in sys.%ls%ls has an invalid value. |
Действие пользователя
Удаление и повторное создание указанного объекта
Если возможно, удалите и повторно создайте указанный объект. Например, если объект является хранимой процедурой или определяемым пользователем типом, повторное создание объекта может устранить проблему.
Восстановление из резервной копии
Если проблема не связана с оборудованием, а известная чистая резервная копия доступна, восстановите базу данных из резервной копии. Это действие применимо только в том случае, если резервная копия не содержит ошибку метаданных.
Экспорт данных в новую базу данных
Если резервная копия также содержит несогласованные метаданные, необходимо создать новую базу данных и экспортировать содержимое существующей базы данных в новую базу данных.
DBCC CHECKDB не может исправить эту ошибку
Эта ошибка не может быть исправлена. Если вы не можете восстановить базу данных из резервной копии, обратитесь в службу поддержки Майкрософт.
Не обновляйте системные таблицы вручную
Не обновляйте системные таблицы вручную. SQL Server не поддерживает никаких изменений вручную в системных базах данных. В случае обновления системной таблицы в базе данных SQL Server в журнале регистрируются следующие события:
При обновлении системной таблицы вручную
Msg 17659: Warning: System table ID <id> has been updated directly in database ID <id> and cache coherence may not have been maintained. SQL Server should be restarted.
Запуск базы данных с системной таблицей, которая была обновлена вручную
Msg 3859: Warning: The system catalog was updated directly in database ID <id>, most recently at date_time.
Выполните команду DBCC CHECKDB после обновления системной таблицы вручную.
Msg 3859: Warning: The system catalog was updated directly in database ID <id>, most recently at date_time.