如何获取特定用户的上次登录日期。我用谷歌搜索了一下,偶然发现了这个问题
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
中显示自定义创建的用户,或者该解决方案的替代方案是什么?
发布于 2017-12-20 20:04:53
使用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
中
发布于 2021-12-21 14:18:10
select DISTINCT login_time, host_name, program_name, login_name from
(SELECT sys.dm_exec_sessions.*,
RANK() OVER(PARTITION BY login_name ORDER BY login_time DESC) as rnk
FROM sys.dm_exec_sessions) l
where l.rnk = 1
ORDER BY l.login_time DESC
https://stackoverflow.com/questions/47905406
复制相似问题