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

问题描述 投票:4回答:1

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

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中,或者该解决方案的替代方案是什么?

sql-server database-administration
1个回答
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;

UPDATE

关于新登录,您必须首先登录才能获得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

© www.soinside.com 2019 - 2024. All rights reserved.