首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL Server 2016 -如何获取用户的上次登录日期?

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

Stack Overflow用户
提问于 2017-12-20 19:49:45
回答 2查看 47.6K关注 0票数 10

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

代码语言:javascript
运行
复制
SELECT name, accdate FROM sys.syslogins

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

我有另一条线索

代码语言:javascript
运行
复制
SELECT login_name, max(login_time) as last_logged_in 
FROM sys.dm_exec_sessions GROUP BY login_name

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

代码语言:javascript
运行
复制
CREATE USER test1 FOR LOGIN test1 WITH DEFAULT_SCHEMA = 'test1'

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-20 20:04:53

使用sys.dm_exec_sessions系统视图

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

这里有一个小脚本,希望能帮到你!

代码语言:javascript
运行
复制
SELECT login_name [Login] , MAX(login_time) AS [Last Login Time]
FROM sys.dm_exec_sessions
GROUP BY login_name;

更新

关于新登录帐户,您必须先使用新登录帐户登录,才能将记录放入sys.dm_exec_sessions

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

代码语言:javascript
运行
复制
CREATE LOGIN NewAdminName WITH PASSWORD = 'ABCDa@12'
GO
CREATE USER [NewAdminName] FOR LOGIN [NewAdminName]
EXEC sp_addrolemember N'db_owner', N'NewAdminName'

现在登录:-

代码语言:javascript
运行
复制
User Name = NewAdminName

Password: ABCDa@12

登录成功后,本次登录信息会存储到sys.dm_exec_sessions

票数 8
EN

Stack Overflow用户

发布于 2021-12-21 14:18:10

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47905406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档