谁是最后修改数据库对象的?

时间:2012-08-16 16:00:20

标签: sql-server sql-server-2008 sql-server-2005 trace

This文章介绍了如何运行标准报告以显示最近的DDL更改。

如果数据被捕获,它可能在某个地方的某个表中。我想Trace这个位置,以便我可以构建自己的报告。

这可能吗?

1 个答案:

答案 0 :(得分:1)

选项#1

select * FROM sys.traces where is_default = 1 ;

此查询包含路径列。复制跟踪文件的路径,现在使用以下查询

SELECT * FROM fn_trace_gettable('Path Column value from sys.traces', default)

修改了哪个表(对象)和谁修改了?

select ObjectName, LoginName 
from ::fn_trace_gettable( 'Path Column value from sys.traces', default)
where EventClass in (46,47,164) and EventSubclass = 0  
                                and DatabaseID = db_id() ;             


select ObjectName,       
ObjectID,       
DatabaseName,       
StartTime,       
EventClass,       
EventSubClass,       
ObjectType,       
ServerName,       
LoginName,       
NTUserName,       
ApplicationName  
from ::fn_trace_gettable( 'Trace File Path', default )            
where EventClass in (46,47,164) and EventSubclass = 0  and DatabaseID = db_id();

选项#2

<强> SQL Server – Auditing Schema Changes using DDL Triggers

此方法将告知添加了哪个列,或者使用了哪个命令来添加