Découvrir qui a modifié une procédure stockée sur SQL Server?

10

Il semble que quelqu'un se soit connecté et ait modifié une procédure stockée sur notre base de données SQL Server. Existe-t-il un moyen de connaître les références de la personne qui a fait cela?

Behrang Saeedzadeh
la source

Réponses:

17

Vous pouvez regarder la trace par défaut et la comprendre facilement. Essayez les exemples de Jonathan Kehayias.

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

C'est à titre d'exemple et vous devez regarder le type d'événement ALTER OBJECT.

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

ÉDITER:

Le code est une gracieuseté de 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; 
Sankar Reddy
la source
Les procédures stockées n'apparaissent pas dans les résultats. Des idées pourquoi?
Behrang Saeedzadeh
Si les SP sont modifiés, ils apparaîtront. Si vous le souhaitez, essayez de créer un SP factice et modifiez-le et voyez s'il apparaît dans le rapport ci-dessus.
Sankar Reddy
Oubliez mon commentaire précédent. Deviner. Merci.
Behrang Saeedzadeh
Heureux, vous l'avez compris :-)
Sankar Reddy
Sachez que ce système de suivi est obsolète selon les documents MSDN. Microsoft recommande d'utiliser à la place leur paradigme "Événements étendus": technet.microsoft.com/en-us/library/bb630354(v=sql.105).aspx
KeithS