• goher2000 - Friday, February 9, 2018 9:02 AM

    umm... here are other two methods

    -- get it from default trace
    DECLARE @trc_path VARCHAR(500)
    SELECT @trc_path=CONVERT(VARCHAR(500),value) FROM fn_trace_getinfo(DEFAULT)
    WHERE property=2

    print @trc_path
    SELECT TEXTData,HostName,ApplicationName,DatabaseName,LoginName,SPID,StartTime,EventSequence
    FROM fn_trace_gettable(@trc_path,1) fn
    WHERE TEXTData LIKE '%Configuration option%'
    -- get it from errorlog
    declare @sysconfigchanges TABLE
    (
        RowID int IDENTITY PRIMARY KEY,
        EntryTime datetime,
        source varchar(50),
        LogEntry varchar(4000)
    )

    insert into @sysconfigchanges
    exec sp_readerrorlog 0,1,'Configuration option'

    select * from @sysconfigchanges where rowid=(select max(rowid) from @sysconfigchanges)

    Those are good. I don't know which one generates a bigger file or if the trace rolls over too many times to get what you need or the logs (but you can change that).
    You can get more information from the trace than the log - it would have the login, not just the spid, host name, application name. You'd have a better chance of finding out who if that's important.

    Sue