web-dev-qa-db-fra.com

SQL Server 2016 - Comment obtenir la dernière date de connexion de l'utilisateur?

Comment puis-je obtenir la dernière date de connexion pour certains utilisateurs. J'ai googlé et suis tombé sur cette requête

SELECT name, accdate FROM sys.syslogins

Mais la colonne accdate semble obsolète et ne se met pas à jour.

J'ai un autre indice

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

Mais il ne montre les résultats que pour les utilisateurs du système, pas ceux que j'ai créés avec cette requête

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

La question est de savoir comment faire apparaître les utilisateurs créés sur mesure dans sys.dm_exec_sessions, ou quelle est l'alternative à cette solution?

6
ixnv

Utilisez sys.dm_exec_sessions vue système

affiche des informations sur toutes les connexions utilisateur actives et les tâches internes. Ces informations incluent la version du client, le nom du programme client, l'heure de connexion du client , l'utilisateur de connexion, le paramètre de session en cours, etc.

Voici un petit script qui espère vous aider!

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

[~ # ~] mise à jour [~ # ~]

Et à propos des nouvelles connexions, vous devez d'abord vous connecter avec elles pour obtenir un enregistrement dans sys.dm_exec_sessions

utilisez donc le code suivant pour créer une connexion: -

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

Connectez-vous maintenant par: -

User Name = NewAdminName

Password: ABCDa@12

Une fois la connexion réussie, les informations de cette connexion sont stockées dans sys.dm_exec_sessions

2
ahmed abdelqader