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:

[code lang=”sql”]
SELECT * FROM sys.configurations
WHERE name like ‘default trace enabled’

[/code]

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

 

[code lang=”sql”]
USE master;
GO

EXEC sp_configure ‘show advanced option’,’1′;
reconfigure
go

exec sp_configure ‘default trace enabled’,1
reconfigure
GO

[/code]

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

[code lang=”sql”]
SELECT * FROM ::fn_trace_getinfo(0)
[/code]

 

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:

104Audit Addlogin Event
105Audit Login GDR Event
106Audit Login Change Property Event
108Audit 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:

[code lang=”sql”]
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;
[/code]

 

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!

 

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