扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
思考这样的场景:数据库的表、存储过程经常别修改,当这些修改造成BUG的时候,很多开发都不承认是他们干的,那我们有没办法找出谁干的呢?
创新互联是一家专注于成都网站设计、成都网站建设与策划设计,江川网站建设哪家好?创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:江川等地区。江川做网站价格咨询:18980820575SQL Server有Default Trace默认跟踪,数据库记录信息到log.trc文件,可以查看trace_event_id,46表示Create对象(Object:Created),47表示Drop对象(Object:Deleted),93表示日志文件自动增长(Log File Auto Grow),164表示Alter对象(Object:Altered),20表示错误日志(Audit Login Failed)。
虽然可以通过上面的方式找到相关的操作,但是它有两个缺点:
1) log.trc文件是滚动更新文件,所有有可能会被系统删除,你找不了太久的数据;
2) 有些操作你可能是后知后觉,出了问题才会去找问题,我们应该主动去监控这些DDL;
我们可以使用DDL触发器主动监控DDL语句的执行,当有对数据库执行DDL就会触发,我们把这些信息保存到表中,并且把操作用户的HostName和修改的T-SQL以邮件的形式发送到指定的邮件。本文将讲述使用Default Trace默认跟踪解决上面的问题,DDL触发器的方式可以参考:SQL Server DDL触发器运用 和 SQL Server 数据库邮件。
默认追踪是在SQL Server 2005中首次出现的新功能,它提供了审计模式修改的功能,例如表创建、存储过程删除等类似过程。默认情况下它是运行的,但是你可以通过sp_configure来启用和停用它。
默认跟踪日志可以通过 SQL Server Profiler打开并查看,或者通过 Transact-SQL 使用 fn_trace_gettable 系统函数查询返回一个表,并且可以对表数据进行过滤、筛选。
默认跟踪能帮助我们跟踪什么有用的信息呢?你可以查看到如下几个内容:
1) 使用Default Trace查看谁还原了你的数据库
2) 数据库中那些对象被created /altered /deleted
3) 查找日志文件快速增长的原因
4) 查看、过滤Login failed for user 'sa'等错误信息
下面主要看看在我们日常使用DDL的过程中,默认跟踪会记录些什么东西:
(一) 检查Default Trace是否已经开启,如果返回Figure1中value为1,那就说明已经开启默认跟踪了;如果value为0表示关闭默认跟踪;
--查询Default Trace是否开启 SELECT * FROM sys.configurations WHERE configuration_id = 1568;
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流