Bonjour,
On m'a demandé de faire des stats sur les utilisateurs d'une base de données.
(récurrences de connexions, date de la dernière connexion,..)
L'objectif est par exemple de voir si certains login ne sont jamais utilisés.

J'ai tenté de répondre au besoin via un trigger logon
!!! Attention , ne pas créer ce trigger sans être sûr, au risque de ne plus pouvoir se logger sur le serveur!!!

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
USE maDB
GO
CREATE TABLE dbo.Login_Info
(
       database_name VARCHAR(255),
       login_name VARCHAR(255),
       login_time DATETIME2(0)
) 
GO
USE master
GO
CREATE TRIGGER connection_history
ON ALL SERVER WITH EXECUTE AS 'admin_login'  /*Créer un compte ayant les droits d'insert sur [maDB].[dbo].[Login_Info], je pense que ça suffirait*/
FOR LOGON
AS
       BEGIN
                INSERT INTO [maDB].[dbo].[Login_Info]
                SELECT DB_NAME(),ORIGINAL_LOGIN(),GETDATE()
       END
 
--Tester une connexion
 
SELECT * FROM maDB.dbo.Login_Info ORDER BY Login_Time DESC
Ca a l'air de fonctionner mais :
-J'ai plusieurs lignes à chaque connexion , à quelques ms près (j'ai l'impression qu'il log une ligne par db présente sur le serveur)
-Des lignes s'ajoutent plus tard, alors que je suis déjà connecté

Comment pourrais-je éviter toutes ces lignes non désirées? Est-ce faisable?

Ou alors avez-vous une autre méthode plus simple?

Mon objectif : stocker dans une table : login_name, logon_datetime

Merci d'avance ,

Vinc