SQL Server 2016 - 如何获取用户的上次登录日期?

时间:2017-12-20 11:49:45

标签: sql-server database-administration

如何获取特定用户的上次登录日期。 我用谷歌搜索并偶然发现了这个问题

SELECT name, accdate FROM sys.syslogins

accdate列似乎已被弃用,并且不会更新。

我有另一个线索

SELECT login_name, max(login_time) as last_logged_in 
FROM sys.dm_exec_sessions GROUP BY login_name

但它只显示系统用户的结果,而不是我使用此查询创建的结果

CREATE USER test1 FOR LOGIN test1 WITH DEFAULT_SCHEMA = 'test1'

问题是,如何让自定义创建的用户出现在sys.dm_exec_sessions中,或者该解决方案的替代方案是什么?

1 个答案:

答案 0 :(得分:2)

使用sys.dm_exec_sessions系统视图

  

显示有关所有活动用户连接和内部的信息   任务。此信息包括客户端版本,客户端程序名称,   客户端登录时间,登录用户,当前会话设置等。

这里有一个小脚本希望帮助你!

SELECT login_name [Login] , MAX(login_time) AS [Last Login Time]
FROM sys.dm_exec_sessions
GROUP BY login_name;

<强>更新

关于新登录,您必须首先登录才能获得sys.dm_exec_sessions

的记录

所以使用下一个代码来创建登录: -

CREATE LOGIN NewAdminName WITH PASSWORD = 'ABCDa@12'
GO
CREATE USER [NewAdminName] FOR LOGIN [NewAdminName]
EXEC sp_addrolemember N'db_owner', N'NewAdminName'

现在登录: -

User Name = NewAdminName

Password: ABCDa@12

成功登录后,此登录信息将存储在sys.dm_exec_sessions