找出谁修改了SQL Server上的存储过程?


10

似乎有人已经登录并在我们的SQL Server数据库上修改了存储过程。有没有办法找出做过此事的人的证书?

Answers:


17

您可以查看默认迹线并轻松解决。尝试Jonathan Kehayias的示例。

http://sqlblog.com/blogs/jonathan_kehayias/archive/2009/05/27/pass-dba-sig-default-trace-presentation-files.aspx

这是一个示例,您需要查看ALTER OBJECT事件类型。

http://sqlblog.com/blogs/jonathan_kehayias/archive/2009/09/29/what-session-created-that-object-in-tempdb.aspx

编辑:

代码由Jonathan Kehayias提供。

DECLARE @filename VARCHAR(255) 
SELECT @FileName = SUBSTRING(path, 0, LEN(path)-CHARINDEX('\', REVERSE(path))+1) + '\Log.trc'  
FROM sys.traces   
WHERE is_default = 1;  

SELECT gt.HostName, 
       gt.ApplicationName, 
       gt.NTUserName, 
       gt.NTDomainName, 
       gt.LoginName, 
       gt.SPID, 
       gt.EventClass, 
       te.Name AS EventName,
       gt.EventSubClass,      
       gt.TEXTData, 
       gt.StartTime, 
       gt.EndTime, 
       gt.ObjectName, 
       gt.DatabaseName, 
       gt.FileName, 
       gt.IsSystem
FROM [fn_trace_gettable](@filename, DEFAULT) gt 
JOIN sys.trace_events te ON gt.EventClass = te.trace_event_id 
WHERE EventClass in (164) --AND gt.EventSubClass = 2
ORDER BY StartTime DESC; 

存储过程未显示在结果中。有什么想法吗?
Behrang Saeedzadeh 2011年

如果修改了SP,则会显示它们。如果需要,请尝试创建一个虚拟SP并对其进行更改,以查看其是否出现在以上报告中。
Sankar Reddy

忘了我之前的评论。弄清楚了。谢谢。
Behrang Saeedzadeh 2011年

很高兴,您知道了:-)
Sankar Reddy

请注意,根据MSDN文档,此跟踪系统已弃用。Microsoft建议改用其“扩展事件”范例:technet.microsoft.com/zh-cn/library/bb630354
v=sql.105).aspx
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.