MSSQLSERVER_3859

适用范围:SQL Server

详细信息

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
    检查目录 Msg 3859,状态 1:警告:系统目录已在数据库 ID %d 中直接更新,最近 在date_time
    CHECKDB 在数据库“db_name”中未发现任何分配错误和一致性错误
    DBCC 执行完毕。 如果 DBCC 输出了错误消息,请与系统管理员联系。

用户操作

若要解决此问题,请使用以下任一方法。

  • 方法 1

    如果具有数据库的干净备份,请从该备份还原数据库。

    注意

    仅当备份在元数据中保持一致时,此方法才有效。

  • 方法 2

    如果无法从备份还原数据库,请将数据和对象导出到新的数据库中。 然后,将手动更新的数据库的内容传输到新数据库中。 请注意,不能使用 DBCC CHECKDB 命令中的 REPAIR 选项来修复系统目录中的不一致问题。 结果就是,该命令无法修复元数据损坏,因此它不提供任何建议的修复级别。

    注意

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

详细信息

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