SQLServer 错误 故障 处理 修复 支持远程
详细信息
Attribute | 值 |
---|---|
产品名称 | 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
检查目录消息 3859,状态 1:警告:系统目录直接在数据库 ID %d 中更新, 最近更新date_time。
CHECKDB 在数据库“db_name”中未发现任何分配错误和一致性错误。
DBCC 执行完毕。 如果 DBCC 输出了错误消息,请与系统管理员联系。
用户操作
若要解决此问题,请使用下列方法之一。
-
方法 1
如果具有数据库的干净备份,请从该备份还原数据库。
注意
仅当备份在元数据中保持一致时,此方法才有效。
-
方法 2
如果无法从备份还原数据库,请将数据和对象导出到新的数据库中。 然后,将手动更新的数据库的内容传输到新数据库中。 请注意,不能使用 DBCC CHECKDB 命令中的 REPAIR 选项来修复系统目录中的不一致问题。 结果就是,该命令无法修复元数据损坏,因此它不提供任何建议的修复级别。
备注
可通过系统目录视图查看系统表中的数据。
详细信息
有关详细信息,请参阅:系统基表。