SQL Serverでストアドプロシージャを変更したユーザーを見つけるには?


10

SQL Serverデータベースで誰かがログインしてストアドプロシージャを変更したようです。それをした人の資格を知る方法はありますか?

回答:


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

SPが変更されている場合、それらは表示されます。必要に応じて、ダミーのSPを作成して変更し、上記のレポートに表示されるかどうかを確認してください。
Sankar Reddy、2011

以前のコメントは忘れてください。理解した。ありがとう。
Behrang Saeedzadeh

嬉しい、あなたはそれを理解しました:-)
Sankar Reddy

このトレースシステムは、MSDNドキュメントに従って非推奨となっていることに注意してください。代わりに、「拡張イベント」パラダイムを使用することをお勧めします:technet.microsoft.com/en-us/library/bb630354
v
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.