• The default trace records which login is responsible for file autogrowth. This sometime shows as sa, for example during some system operations, but it is worth a try.

    Here's the script I use:

    use master;

    set nocount on;

    declare @path sql_variant

    select @path = value

    from ::fn_trace_getinfo(0) i

    join sys.traces t on t.id = i.traceid

    where t.is_default = 1 and i.property = 2

    select df.StartTime,

    e.name,

    df.DatabaseName,

    case when df.ApplicationName like 'SQLAgent%JobStep%'

    then isnull((select name from msdb..sysjobs where job_id = CONVERT(uniqueidentifier, convert(varbinary(16), substring(df.ApplicationName, charindex('(Job', df.ApplicationName) + 5, 34), 1))), df.ApplicationName)

    else df.ApplicationName end AppName,

    df.LoginName,

    df.SPID,

    df.Duration,

    df.EndTime,

    df.FileName,

    df.TextData,

    df.IntegerData

    from ::fn_trace_gettable(convert(nvarchar(255), @path), 0) df

    join sys.trace_events e ON df.EventClass = e.trace_event_id

    where e.category_id = 2

    order by df.StartTime desc

    If the default trace file has rolled over, modify the first bit to look at an older file.