Sybase如何通过sp_audit审计视图、存储过程变更及触发器删除操作
Sybase sp_audit 审计操作可行性解答
可以实现,sp_audit 是 Sybase ASE 官方提供的系统审计存储过程,原生支持你提到的三类操作的审计日志记录,仅做日志记录的场景不需要额外开发自定义触发器。
配置步骤(需使用 sa 权限操作)
- 第一步先开启数据库实例的审计总开关:
执行后需要重启数据库实例生效。sp_configure "auditing", 1 - 按需求配置对应操作的审计规则:
- 审计所有触发器删除操作:
sp_audit "drop", "trigger", "all", "on" - 审计所有视图的创建/变更/删除操作:
sp_audit "create", "view", "all", "on"sp_audit "alter", "view", "all", "on"sp_audit "drop", "view", "all", "on" - 审计所有存储过程的创建/变更/删除操作:
sp_audit "create", "procedure", "all", "on"sp_audit "alter", "procedure", "all", "on"sp_audit "drop", "procedure", "all", "on"
- 审计所有触发器删除操作:
补充说明
审计日志默认写入系统表
master..sysaudits,你可以直接查询该表获取操作时间、操作用户、操作对象、操作SQL等信息,也可以单独配置审计日志存储设备,避免审计数据占用系统库存储空间。
审计日志查询示例(查询近7天的视图变更操作)
select eventtime, loginname, objname, extrainfo from master..sysaudits where event = 52 -- 事件ID 52对应 alter view 操作,不同版本事件ID可查ASE官方事件映射表 and eventtime > dateadd(day, -7, getdate()) order by eventtime desc
注意事项
- 开启全量审计会带来少量性能损耗,如果只需要审计特定用户、特定库的操作,可以把上述命令中的
all替换为对应的用户名/库名,缩小审计范围降低性能影响。 - 如果你除了日志记录外,还需要实现变更拦截、操作回滚等自定义逻辑,才需要额外搭配DDL触发器实现,仅日志需求用
sp_audit足够。
内容的提问来源于stack exchange,提问作者Олег Иванов
相关产品推荐
相关产品推荐

