The default trace is a system trace that is enabled by default in SQL Server 2005,2008, and 2012. According to BOL this trace captures information mostly relating to configuration changes. The 2012 documentation mentions that this functionality will be removed in a future version and we should use extended events instead. I however, find the default trace particularly useful because it is not something that I have to configure and enable on a server-by-server basis . For those of you that have viewed the database disk usage report in Management Studio, you are already familiar with the default trace. The autogrow / autoshrink events section of the database disk usage report is pulled from the default trace information.
To view the default trace you can open it in SQL Profiler or use the function fn_trace_gettable to query the trace file. It should be noted that the default trace rolls over after restarts and after the trace file reaches 20MB. Only 5 trace files are maintained so on a busy system the default trace will not hold a lot of history but for the instance we had the other morning the default trace was perfect.
Here is a copy of the script I use to query the default trace. I choose to filter out the backup and restore information, event_id 115, to make the results easier to analyze.
1: DECLARE @Path NVARCHAR(250);
2:
3: SELECT
4: @Path = REVERSE(SUBSTRING(REVERSE([path]),
5: CHARINDEX('\', REVERSE([path])), 260)) + N'log.trc'
6: FROM sys.traces
7: WHERE is_default = 1;
8:
9: SELECT DatabaseName,
10: Filename,
11: (Duration/1000) AS Duration,
12: t.StartTime,
13: EndTime,
14: EventClass,
15: te.name
16: TextData,
17: LoginName,
18: ApplicationName,
19: Hostname,
20: (IntegerData * 8.0/1024) AS ChangeInSize
21: FROM ::fn_trace_gettable(@Path, DEFAULT) t
22: JOIN sys.trace_events te
23: on t.EventClass = te.trace_event_id
24: WHERE t.StartTime > '20121028'
25: AND EventClass != 115
26: ORDER BY t.StartTime DESC;
By passing the second parameter for fn_trace_gettable as “Default” the function reads the information from all of the trace files. Joining the trace table with the sys.trace_events system view allows me to pull the name of the trace event.
Here are the results after changing my database name from “Sample” to “Sample DO NOT USE”.
The default trace can be a very useful tool for finding information about your server instance. I urge you to investigate it further for yourself. Bear in mind when using the default trace that depending on service restarts and the level of activity on the server that information captured by the default trace may not stick around very long.