You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server Audit日志生成失败,提示'mndo'重复键错误排查

SQL Server Audit 重复键错误排查方案

问题现象

  • 启用Audit后无法生成日志,返回错误:

    "item has already Been added. Key in dictionary: 'mndo' Key Being added: 'mndo'"

  • 测试用SQL命令(使用test用户执行):
    USE Clinica_Medica
    
    SELECT * FROM TEST WHERE Nome = 'OI';
    
  • 更换SA用户、使用全局策略测试,问题依旧;已确认相关组件已启用。

排查与解决步骤

  1. 检查审计策略的重复定义
    核对创建Audit、服务器审计规范、数据库审计规范的脚本或配置,确认是否重复添加了mndo相关的审计动作或目标对象。比如同一策略中多次绑定同一项审计规则,或者不同策略重复关联了相同的审计条目。

  2. 验证Audit日志路径权限
    确认Audit指定的日志文件路径对SQL Server服务账户具备读写权限。权限不足时,可能导致日志无法写入,同时触发内部字典重复键的异常(部分场景下权限问题会引发非直观错误)。

  3. 升级SQL Server补丁
    该重复键错误在SQL Server 2016、2017等版本的早期累积更新(CU)中存在已知bug,建议升级到对应版本的最新CU,修复这类内部字典冲突问题。

  4. 重建Audit对象
    删除现有Audit及关联的审计规范,重新创建(确保每个审计动作只添加一次):

    -- 删除数据库审计规范
    DROP DATABASE AUDIT Specification [Your_Db_Audit_Spec]
    -- 删除服务器审计规范
    DROP SERVER AUDIT Specification [Your_Server_Audit_Spec]
    -- 删除Audit对象
    DROP AUDIT [Your_Audit_Name]
    
    -- 重新创建Audit(替换路径为实际有效路径)
    CREATE AUDIT [Your_Audit_Name]
    TO FILE (FILEPATH = N'C:\SQLAuditLogs\')
    WITH (QUEUE_DELAY = 1000, ON_FAILURE = CONTINUE);
    
    -- 启用Audit
    ALTER AUDIT [Your_Audit_Name] WITH (STATE = ON);
    
  5. 检查系统元数据冲突
    若上述步骤无效,查询系统视图检查Audit元数据是否存在重复条目:

    -- 查询服务器审计规范详情
    SELECT * FROM sys.server_audit_specifications_details
    -- 查询数据库审计规范详情
    SELECT * FROM sys.database_audit_specifications_details
    

    若发现mndo相关的重复记录,清理后重新创建审计规范。

内容的提问来源于stack exchange,提问作者user21143871

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:25:11