DBA经常会被问到:我们的对象(表,视图,函数,存储过程等)被意外删除(修改),我想知道是谁干的?什么时候做的?从那个HostName连接过来的?是ApplicationName是什么?如何查看?
1. SSMS自带的SchemaChange History功能
a) Right click on database, forwhich you want to view the report
b) Go to Reports->StandardReports->schema Change history
实际上,SQL Server有一个高级配置选项(默认是开启的),名称叫:defaulttrace enabled。它作用是SQL Server开启一个默认的Trace Profiler,Trace的文件放到目录Dump Directory,在此目录存在5个归档文件名为Log_XXXX.trc,如下图所示:
SSMS中的Schema Change History就是读取这个Trace文件获取到的结果集。
局限性
a) 基于上面原理的分析,如果我们这个高级选项关闭,则无法获取到这个报表
b) 根据我的测试,它的及时性得不到体现(猜测也许