Vem la till det där kontot i SYSADMIN-gruppen ?

Oopps! Upgrade your browser pretty please. Oopps! Upgrade your browser pretty please.

 

 

Först lite grundläggande information om Default Trace.

Default Trace är en fördefinierad profiler trace som körs som en ”server side trace”. Listan på vilka events som denna trace fångar finns i slutet av denna blogpost.

När du installerar SQL Server så kommer den att som standard starta med Default Trace igång. Har du inte inaktiverat den så har du en källa med massa rolig information du kan ha nytta av i ditt jobb som DBA.

Vill du kontrollera om Default trace är igång eller inte kan du köra detta script:

SELECT * FROM sys.configurations
WHERE name like 'default trace enabled'

Om Default Trace är avaktiverad kan man slå på den genom SP_CONFIGURE:

 

USE master;
GO

EXEC sp_configure 'show advanced option','1';
reconfigure
go

exec sp_configure 'default trace enabled',1
reconfigure
GO

Vart hittar jag Default Trace?

Default Trace filerna är max 5 till antalet. SQL skriver till en fil och byter antingen när filen blivit 20 mb stor eller när SQL tjänsten startas. Det betyder att man inte kan ha mer än 100 MB och därför är det heller ingen risk att man fyller disken med massa gammal data.

 

Default trace skrivs som sagt till fil och du hittar den fysiska platsen t ex genom

SELECT * FROM ::fn_trace_getinfo(0)

 

För att hitta vem som la till ett login i en Server Role finns det några event man kan filtrera ut.

Dessa 4 tycker jag är intressanta i just detta case:

104 Audit Addlogin Event
105 Audit Login GDR Event
106 Audit Login Change Property Event
108 Audit Add Login to Server Role Event

 

Bra att veta är att det finns inget speciellt event för ”DROP Member” utan dom fångas under samma eventclass som ”ADD Member”.

Jag har lagt till ett nytt konto på min test-server. Lade till detta login in SYSADMIN-rollen, tog bort det och tog sedan även bort detta login.

Här är ett script utformat för att fånga relevant information för dessa event:

DECLARE @path NVARCHAR(260);
SELECT @path =
   REVERSE(SUBSTRING(REVERSE([path]),
   CHARINDEX(CHAR(92), REVERSE([path])), 260)) + N'log.trc'
FROM sys.traces
WHERE is_default = 1;

SELECT
   loginname,
   textdata,
   RoleName,
   TargetLoginName,
   starttime,
   e.name as EventName,
   hostname,
   applicationname,
   servername,
   databasename,
   objectName,
   e.category_id,
   cat.name,
   duration,
   eventclass,
   eventsubclass,
   loginsid,
   endtime,
   spid
FROM sys.fn_trace_gettable(@path, DEFAULT)
   INNER JOIN sys.trace_events e
   ON eventclass = trace_event_id
   INNER JOIN sys.trace_categories AS cat
   ON e.category_id = cat.category_id
WHERE EventClass IN (104,105,106,108)
ORDER BY StartTime DESC;

 

Här är resultatet av mitt script kört i min test-server och resultatet är rätt avslöjande.

default_trace_demo

Notera att även om man inte får all information om t ex event 104 så kan man genom eventsubclass se om det handlar om att man lagt till eller tagit bort ett LOGIN (eventsubclass 1 = add login, 2 = Drop Login).

Detta är bara några få av alla events som man kan hitta i Default Trace. Nedan ser du en lista på alla events som fångas upp. Nu kan du prova själv och testa vilken information du har mest nytta av!

 

eventid Name
18 Audit Server Starts And Stops
20 Audit Login Failed
22 ErrorLog
46 Object:Created
47 Object:Deleted
55 Hash Warning
69 Sort Warnings
79 Missing Column Statistics
80 Missing Join Predicate
81 Server Memory Change
92 Data File Auto Grow
93 Log File Auto Grow
94 Data File Auto Shrink
95 Log File Auto Shrink
102 Audit Database Scope GDR Event
103 Audit Schema Object GDR Event
104 Audit Addlogin Event
105 Audit Login GDR Event
106 Audit Login Change Property Event
108 Audit Add Login to Server Role Event
109 Audit Add DB User Event
110 Audit Add Member to DB Role Event
111 Audit Add Role Event
115 Audit Backup/Restore Event
116 Audit DBCC Event
117 Audit Change Audit Event
152 Audit Change Database Owner
153 Audit Schema Object Take Ownership Event
155 FT:Crawl Started
156 FT:Crawl Stopped
157 FT:Crawl Aborted
164 Object:Altered
167 Database Mirroring State Change
175 Audit Server Alter Trace Event
218 Plan Guide Unsuccessful