web-dev-qa-db-ja.com

SQL Server 2016-ユーザーの最終ログイン日を取得する方法は?

特定のユーザーの最終ログイン日付を取得するにはどうすればよいですか。私はこのクエリにグーグルでつまずいた

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に表示する方法、またはそのソリューションの代替手段は何ですか?

6
ixnv

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に保存されます

2