我想在 SQL SERVER 2012 中找出谁在创建 SQL 登录以及在哪个日期

Bhu*_*dra 4 sql-server audit sql-server-2012 logins

我试图在 sql server 2012 中找出谁创建了登录名和日期。任何机构都可以帮助解决这个问题,谢谢,

KAS*_*DBA 5

SQL 服务器通常不会对此进行跟踪。因此,您必须使用默认跟踪来收集 EventClass 109 的信息。

确保使用以下命令检查默认跟踪是否正在运行:

SELECT* FROM sys.configurations WHERE configuration_id = 1568
Run Code Online (Sandbox Code Playgroud)

如果未启用,则使用以下方法启用它:

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'default trace enabled', 1;
GO
RECONFIGURE;
GO
Run Code Online (Sandbox Code Playgroud)

然后你可以运行这里提到的查询来收集添加的 SQL 登录信息:

SELECT  TE.name AS [EventName] ,
        v.subclass_name ,
        T.DatabaseName ,
        t.DatabaseID ,
        t.NTDomainName ,
        t.ApplicationName ,
        t.LoginName ,
        t.SPID ,
        t.StartTime ,
        t.RoleName ,
        t.TargetUserName ,
        t.TargetLoginName ,
        t.SessionLoginName
FROM    sys.fn_trace_gettable(CONVERT(VARCHAR(150), ( SELECT TOP 1
                                                              f.[value]
                                                      FROM    sys.fn_trace_getinfo(NULL) f
                                                      WHERE   f.property = 2
                                                    )), DEFAULT) T
        JOIN sys.trace_events TE ON T.EventClass = TE.trace_event_id
        JOIN sys.trace_subclass_values v ON v.trace_event_id = TE.trace_event_id
                                            AND v.subclass_value = t.EventSubClass
WHERE   te.name IN ( 'Audit Addlogin Event', 'Audit Add DB User Event',
                     'Audit Add Member to DB Role Event' )
        AND v.subclass_name IN ( 'add', 'Grant database access' )
Run Code Online (Sandbox Code Playgroud)

注意 * 有 5 个默认跟踪文件并且这些文件被翻转,因此可以捕获与对象相关的最新信息,而不是与旧事件相关的信息。因此,为了保存信息以备将来使用,请阅读在默认跟踪中收集信息