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 选项来修复系统目录中的不一致问题。 结果就是,该命令无法修复元数据损坏,因此它不提供任何建议的修复级别。

    备注

    可通过系统目录视图查看系统表中的数据。

详细信息

有关详细信息,请参阅:系统基表


数据运维技术 » SQLServer 错误 故障 处理 修复 支持远程