• I think OP is asking if there is a way of looking back at changes made to logins.

    If so, and you have the default trace running, it can be done as long as the change wasn't too long ago.

    I use this:

    use master;

    set nocount on;

    declare @path nvarchar(500)

    if HAS_PERMS_BY_NAME(NULL, NULL, 'ALTER TRACE') = 1

    select @path = convert(nvarchar(500), 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;

    if @path is not null

    begin

    select @path = reverse(substring(reverse(@path), charindex('\', reverse(@path)), 500)) + N'log.trc'

    select last_occurrence, name + isnull(' (' + subclass_name + ')', '') EventName,

    DatabaseName, LoginName, RoleName, TargetUserName, TargetLoginName, SessionLoginName, TextData, num_occurrences

    from (

    select e.name,

    v.subclass_name,

    df.ApplicationName,

    df.DatabaseName,

    df.LoginName,

    df.RoleName,

    df.TargetUserName,

    df.TargetLoginName,

    df.SessionLoginName,

    convert(nvarchar(255), df.TextData) TextData,

    max(df.StartTime) last_occurrence,

    count(*) num_occurrences

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

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

    left join sys.trace_subclass_values v on v.trace_event_id = e.trace_event_id and v.subclass_value = df.EventSubClass

    where e.category_id = 8

    and e.trace_event_id <> 175

    group by e.name, v.subclass_name, df.ApplicationName, df.DatabaseName, df.LoginName, df.RoleName, df.TargetUserName, df.TargetLoginName, df.SessionLoginName, convert(nvarchar(255), df.TextData)) x

    order by last_occurrence desc

    end

    Hope this helps.