sqlserver 能不能查看谁删除了表

sqlserver 能不能查看谁删除了表
最新回答
风与纸片人

2026-10-21 09:29:36

在SQL Server中可以通过一些方法来尝试追踪谁删除了表,但过程相对复杂且可能需要提前进行一些配置。

一、启用数据库审计
1. 开启服务器审计:使用SQL Server Management Studio(SSMS),登录到数据库引擎实例。在对象资源管理器中,依次展开服务器、安全性、审计。右键单击“审计”,选择“新建审计”。在“新建审计”对话框中,为审计指定一个名称,例如“TableDeleteAudit”,选择审计的存储位置(如文件或Windows应用程序日志),并配置其他相关选项,如最大文件大小、最大文件数等。然后点击“确定”创建审计。
2. 创建服务器审计规范:右键单击“审计规范”,选择“新建服务器审计规范”。在“新建服务器审计规范”对话框中,选择之前创建的审计,然后在“事件”列表中找到“DATABASE_OBJECT_DELETE”事件(表示数据库对象删除)。选择要审计的数据库,以及要审计的具体对象类型(如特定架构下的表等)。配置完成后点击“确定”。

二、查看审计日志
1. 文件存储审计日志:如果审计日志存储在文件中,可以通过SSMS连接到相关文件路径来查看日志内容。在日志文件中,可以找到与表删除操作相关的记录,包括执行删除操作的登录名、时间等信息。
2. Windows应用程序日志:如果审计日志记录到Windows应用程序日志中,可以通过事件查看器来查看。在事件查看器中找到对应的SQL Server审计事件,从中分析谁执行了表删除操作。

通过以上步骤,可以在一定程度上追踪谁删除了表,但启用审计会对系统性能有一定影响,需要谨慎评估和配置。