ALTER DATABASE AUDIT语法错误:添加CREATE/DROP到服务器审计失败求助
解决方案
错误原因是SQL Server的数据库审计规范不支持直接使用CREATE或DROP作为通用动作,必须指定具体的对象类型,或者使用预定义的审计动作组。
方法一:针对具体对象类型添加审计
如果你需要监控特定类型对象的创建和删除(比如表、存储过程),可以按以下方式修改语句:
ALTER DATABASE AUDIT SPECIFICATION Powercash_Audit FOR SERVER AUDIT PowercashAudit -- 监控dbo架构下的表创建/删除 ADD (CREATE TABLE ON SCHEMA::dbo BY PUBLIC), ADD (DROP TABLE ON SCHEMA::dbo BY PUBLIC), -- 监控dbo架构下的存储过程创建/删除 ADD (CREATE PROCEDURE ON SCHEMA::dbo BY PUBLIC), ADD (DROP PROCEDURE ON SCHEMA::dbo BY PUBLIC) WITH (STATE = ON); GO
你可以根据实际需求添加其他对象类型,比如VIEW、FUNCTION等。
方法二:使用预定义审计动作组
如果需要监控dbo架构下所有对象的创建、修改、删除操作,直接使用SCHEMA_OBJECT_CHANGE_GROUP动作组更高效:
ALTER DATABASE AUDIT SPECIFICATION Powercash_Audit FOR SERVER AUDIT PowercashAudit ADD (SCHEMA_OBJECT_CHANGE_GROUP) WITH (STATE = ON); GO
这个动作组会自动捕获架构级对象的所有变更操作,包括CREATE、DROP、ALTER。
内容的提问来源于stack exchange,提问作者Alexandre Barrère
相关产品推荐
相关产品推荐

