最近发现经常数据库的存储过程被人更新过了,所以需要将修改的日志记录下来。在实现过程中发现跟踪、审计均能达到跟踪的目的,暂没有发现两个差别。
1跟踪
需要先创建跟踪,设置先关配置,再添加需要跟踪的事件及我们关注的指标列 ,最后开启跟踪。下面是是监控数据库中Create、Alter、Drop对象的操作脚本。
/****************************************************************/
--创建跟踪文件返回值
declare @rc int
--创建一个跟踪句柄
declare @TraceID int
--创建跟踪文件路径
declare @TraceFilePath nvarchar(500)
set @TraceFilePath=N'D:\FTP共享\HL\SqlTraceLog'
--跟踪文件的大小
declare @maxfilesize bigint
set @maxfilesize=5
--设置停止的时间
declare @EndTime datetime
set @EndTime=null
--设置系统默认的操作
declare @options int
set @options=2
--设置默认滚动文件的数目
declare @filecount int
set @filecount=5
---创建跟踪
exec @rc=sp_trace_Create
@TraceID output,
@options,
@TraceFilePath,
@maxfilesize,
@EndTime,
@filecount
--查询创建跟踪的TraceID,这是系统返回
if(@rc=0)
select @TraceID
--select * from sys.traces
--where id=9
--添加跟踪事件
--131表示要跟踪的事件,后面一列表示要关注的属性列 这里关注了textdata ,starttime ,databasename ,loginname ,error 5列,最后1表示状态,为开启跟踪
exec sp_trace_setevent @TraceID,131,1,1
exec sp_trace_setevent @TraceID,131,11,1
exec sp_trace_setevent @TraceID,131,14,1
exec sp_trace_setevent @TraceID,131,35,1
exec sp_trace_setevent @TraceID,131,31,1
--将跟踪启用为跟踪
exec sp_trace_setstatus @TraceID,1
--查询
select textdata ,starttime ,databasename ,loginname ,error from ::fn_trace_gettable('D:\FTP共享\HL\SqlTraceLog.trc',1)
2审计
审计分为服务器、数据库、对象3个级别的审计
添加数据审核规范,这个是在数据库—安全性—数据库审核规范中,右击新建
数据库审计添加成功,现在可以create drop alter 数据库对象,均会被记录在文件中