适用范围:SQL Server
详细信息
项 | 值 |
---|---|
产品名称 | SQL Server |
事件 ID | 8992 |
事件来源 | MSSQLSERVER |
组件 | SQLEngine |
符号名称 | DBCC3_CHECK_CATALOG |
消息正文 | 请检查目录消息 ERROR,级别 LEVEL,状态 STATE: MESSAGE。 |
注意
8992 错误消息引用了另一个有关实际不一致性的特定消息(范围在 3851 到 3858 之间)。
说明
DBCC CHECKCATALOG
或 DBCC CHECKDB
发现指定对象的系统元数据表中存在不一致。 也就是说,记录的对象 ID 与错误消息中指定的对象之间存在不一致。
当手动更新一个或多个系统表以在系统元数据中创建不一致的方式时,可能会出现此错误。 例如,可以手动删除 sysobjects
表中的对象,而不删除其他表中的关联行,例如 sysindexes
和 syscolumns
。
当针对从 SQL Server 2000 (8.x) 升级到更高版本的 SQL Server 的数据库运行时 DBCC CHECKDB
,可能会出现此错误。 在 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 无法修复此错误
无法修复此错误。 如果无法从备份还原数据库,请联系Microsoft支持部门。
不手动更新系统表
不要对系统表进行手动更新。 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.