跳到主要内容
系统常识 SQL Server审计安全

怎么查「谁做了什么」:SQL Server 审计怎么用

SQL Server 审计(Audit)的机制:记录谁连了、跑了什么语句、改了谁的对象,审计规范怎么建、审计事件到哪查,以及审计的代价。

发布于 2026/11/11 所属频道 SQL Server

结论先行

「谁在什么时间对哪个库做了什么」这类问题,靠**服务器级审计(Server Audit)**回答:建一个审计规范指定要记录的事件类(登录、对象操作、语句执行等),引擎把审计事件写入指定目标(文件/Windows 日志/…),之后按时间线查询即可。它是事件驱动记录,不是实时盯梢——代价是持续的写 I/O 与存储。

三层概念

概念 作用
审计(Audit) 一个记录目标(文件、Windows 事件日志等)
审计规范(Audit Specification) 决定「记什么」:服务器级/数据库级,勾选事件类
审计事件 实际产生的记录条目,落到审计目标里

开启路径(SSMS)

  1. SSMS 管理工具条目 中 安全性 → 服务器审计 → 新建审计,指定输出目标(文件路径);
  2. 新建「服务器审计规范」,勾选事件:登录/登出失败、对象变更、语句执行(STATEMENT 类粒度最细);
  3. 启用规范;对库内操作建「数据库审计规范」。

查审计记录

-- 用系统函数读审计文件(审计目标为文件时)
SELECT event_info, event_time
FROM sys.fn_get_audit_file(N'D:\audit\*', NULL, NULL)
ORDER BY event_time DESC;

按 event_type、server_principal_name、event_time 过滤即可还原「某人某时对某对象做了什么」。

代价与边界

全量 STATEMENT 审计在高并发库上写放大明显——生产上按风险面裁剪事件类(登录失败、DDL 变更必记,高频 DML 慎开)。

  • 审计目标文件权限要收好(它本身是明文事件,含账号名);
  • 审计是「事后取证」,不是拦截——防破坏还得靠权限(最小权限相关条目);
  • 审计功能属引擎特性,各版本支持范围以 SQL Server 2022 Developer、SQL Server 2025 Developer 等条目页说明为准。

相关链接

本文内容基于公开资料整理,仅供参考;涉及授权与合规的操作请以厂商官方文档为准。

相关推荐下载

按本文主题匹配的官方原版镜像条目

配套 PE 工具

制作启动盘、备份数据、修复引导

其他常识文章

同一集合内的相近主题,按标签与关键词匹配