J'essaie de savoir qui a changé le mot de passe pour une connexion à SQL Server 2008 R2.
J'ai déjà vérifié la trace par défaut - et cela ne consomme pas cet événement. La trace par défaut inclura ces événements liés à la sécurité:
/*
Audit Add DB user event
Audit Add login to server role event
Audit Add Member to DB role event
Audit Add Role event
Audit Add login event
Audit Backup/Restore event
Audit Change Database owner
Audit DBCC event
Audit Database Scope GDR event (Grant, Deny, Revoke)
Audit Login Change Property event
Audit Login Failed
Audit Login GDR event
Audit Schema Object GDR event
Audit Schema Object Take Ownership
Audit Server Starts and Stops
*/
En outre, j'ai examiné la sauvegarde du journal de transaction pour la découvrir, mais pas de chance.
Y a-t-il une autre façon de le trouver?
De plus, je suis conscient d'une trace latérale du serveur aidera, mais malheureusement dans notre trace de serveur, nous n'avons pas inclus le Audit Login Change Password Event
.
Le meilleur article que j'ai trouvé vient d'Aaron Bertrand: Suivi des modifications de mot de passe de connexion dans SQL Server
Ceci est plus long qu'un commentaire, poster comme réponse
select top(10)
[Transaction ID],
[Begin Time],
[Transaction Name],
[Transaction SID],
SUSER_SNAME([Transaction SID])
from fn_dblog(null, null)
where Operation = 'LOP_BEGIN_XACT';
Transaction ID Begin Time Transaction Name Transaction SID
-------------- ------------------------ --------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0000:00002b12 2014/01/08 20:10:14:890 Event_Session_Startup NULL
0000:00002b13 2014/01/08 20:10:15:027 DBMgr::StartupDB NULL
0000:00002b14 2014/01/08 20:10:15:513 AddGuestUserToTempdb NULL
0000:00002b15 2014/01/08 20:10:15:537 DBMgr::StartupDB NULL
0000:00002b16 2014/01/08 20:10:15:537 DBMgr::StartupDB NULL
0000:00002b17 2014/01/08 20:10:15:537 DBMgr::StartupDB NULL
0000:00002b18 2014/01/08 20:10:15:540 DBMgr::StartupDB NULL
0000:00002b19 2014/01/08 20:10:15:550 DBMgr::StartupDB NULL
0000:00002b1a 2014/01/11 11:49:42:760 AutoCreateQPStats 0x010500000000000515000000A065CF7E784B9B5FE77C877084B65600
0000:00002b1b 2014/01/11 11:53:26:620 test_ack 0x010500000000000515000000A065CF7E784B9B5FE77C877084B65600
(10 row(s) affected)
Vous pouvez utiliser la gâchette DDL sur le niveau du serveur (notez que, pour cet exemple, vous devez disposer de la fonction de mail de base de données SQL Server activée et définie):
CREATE Trigger [Trg_TrackLoginManagement]
on ALL Server
for DDL_LOGIN_EVENTS
as
set nocount on
declare @data xml,
@EventType varchar(100),
@EventTime datetime,
@ServerName varchar(100),
@AffectedLoginName varchar(100),
@WhoDidIt varchar(100),
@EmailSubject varchar(500),
@EmailBody varchar(800),
@EmailRecipients varchar(300)
set @EmailRecipients = '[email protected]'
set @data = eventdata()
set @EventType = @data.value('(/EVENT_INSTANCE/EventType)[1]', 'varchar(100)')
set @EventTime = @data.value('(/EVENT_INSTANCE/PostTime)[1]','datetime')
set @ServerName = @data.value('(/EVENT_INSTANCE/ServerName)[1]','varchar(100)')
set @AffectedLoginName = @data.value('(/EVENT_INSTANCE/ObjectName)[1]','varchar(100)')
set @WhoDidIt = @data.value('(/EVENT_INSTANCE/LoginName)[1]','varchar(100)')
set @EmailSubject = 'ALERT: DDL_LOGIN_Event: ' + @EventType + ' occured by ' + @WhoDidIt + ' on ' + @ServerName
set @EmailBody = 'DDL_Login_Event: ' + @EventType + char(10) +
'Event Occured at: ' + convert(Varchar, @EventTime) + char(10) +
'ServerName: ' + @ServerName + char(10) +
'Affected Login Name: ' + @AffectedLoginName + char(10) +
'Event Done by: ' + @WhoDidIt
EXEC msdb.dbo.sp_send_dbmail
@recipients = @EmailRecipients,
@body = @EmailBody,
@subject = @EmailSubject ;
GO