MSSQLSERVER_3859
适用于:SQL Server
详细信息
属性 | 值 |
---|---|
产品名称 | SQL Server |
事件 ID | 3859 |
事件来源 | MSSQLSERVER |
组件 | SQLEngine |
符号名称 | DBCC_CHECKCAT_DIRECT_UPDATE |
消息正文 | 警告:系统目录在数据库 ID %d 中直接更新,最近在 %S_DATE |
说明
此错误表示用户发起了对系统表的更改。 不支持手动更新系统表。 系统表只能由 SQL Server 数据库引擎更新。 当 SQL Server 检测到用户对系统表发起的更改时,以下两种情况下会引发错误 3859:
方案 1
启动包含手动更新的系统表的 SQL Server 数据库时,会记录在 SQL Server 错误日志或应用程序日志事件查看器中记录如下事件:
日志名称: 应用程序
源:MSSQLSERVER 事件 ID:3859
任务类别:服务器
级别:信息
说明:警告:系统目录在数据库 ID %d 中直接更新,最近 在date_time方案 2
手动更新系统表后,如果执行
DBCC_CHECKDB
命令,将返回以下警告消息:“database_name”的 DBCC 结果。
消息 8992,级别 16,状态 1,行 1
检查目录 Msg 3859,状态 1:警告:系统目录已在数据库 ID %d 中直接更新,最近 在date_time。
CHECKDB 在数据库“db_name”中未发现任何分配错误和一致性错误。
DBCC 执行完毕。 如果 DBCC 输出了错误消息,请与系统管理员联系。
用户操作
若要解决此问题,请使用下列方法之一。
方法 1
如果具有数据库的干净备份,请从该备份还原数据库。
注意
仅当备份在元数据中保持一致时,此方法才有效。
方法 2
如果无法从备份还原数据库,请将数据和对象导出到新的数据库中。 然后,将手动更新的数据库的内容传输到新数据库中。 请注意,不能使用 DBCC CHECKDB 命令中的 REPAIR 选项来修复系统目录中的不一致问题。 结果就是,该命令无法修复元数据损坏,因此它不提供任何建议的修复级别。
注意
可通过系统目录视图查看系统表中的数据。
详细信息
有关详细信息,请参阅: 系统基表。