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

MS SQL Server 2022服务器审核无法禁用及删除问题求助

解决SQL Server服务器审核(Server Audit)无法禁用/删除的阻塞问题

第一步:定位并终止阻塞会话

先查询找出阻塞ALTER SERVER AUDIT操作的会话:

SELECT 
    blocking_session_id,
    session_id,
    command,
    wait_type,
    wait_time,
    resource_description
FROM sys.dm_exec_requests
WHERE command LIKE '%ALTER SERVER AUDIT%' OR blocking_session_id <> 0;

若查询结果中blocking_session_id不为0,直接终止该阻塞会话(确认无重要事务后执行):

KILL <blocking_session_id>;

第二步:检查审核目标资源占用

查看审核的目标配置与状态:

SELECT 
    name,
    status_desc,
    audit_file_path,
    on_failure_desc
FROM sys.server_audits
WHERE name = 'System Logins';
  • 若为文件目标:检查audit_file_path对应的文件是否被其他进程(如日志阅读器、备份工具)占用,关闭占用进程后重试禁用操作。
  • 若为Windows事件日志目标:确认事件日志服务正常运行,且日志未达到存储上限导致写入阻塞。

第三步:通过DAC(专用管理员连接)执行操作

如果单用户模式无效,使用DAC连接执行禁用/删除操作,DAC不受常规会话限制:

  1. 在SSMS的服务器名称输入框中填写ADMIN:<你的SQL Server实例名>,完成登录。
  2. 执行命令:
ALTER SERVER AUDIT [System Logins] WITH (STATE = OFF);
GO
DROP SERVER AUDIT [System Logins];
GO

第四步:极端情况:手动清理系统元数据(谨慎操作)

以上方法均失败时,备份系统数据库后尝试以下操作:

  1. 停止SQL Server服务。
  2. 通过命令行启动单用户模式(路径根据你的实例调整):
sqlservr.exe -m -dC:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\DATA\master.mdf
  1. 用sqlcmd连接实例,执行清理:
USE master;
GO
DELETE FROM sys.server_audits WHERE name = 'System Logins';
GO
  1. 重启SQL Server服务至正常模式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:34:57