Hello.
J'ai plein de bases de données sur différentes instances et je souhaiterais vérifier les connexions qui sont faites sur des bases de données précises dont je doute de l'utilité.
J'ai regardé diverses solutions et j'aimerais bien faire ça par un trigger.
J'ai fait un trigger qui capte le logon mais mon problème est que je n'arrive pas à trouver la base de données sur laquelle le user va se connecter.
Voici mon code (en test...) :
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 CREATE TABLE [test].[dbo].[ddl_log]( [id] [bigint] IDENTITY(1,1) NOT NULL, [ts] [datetime] NOT NULL CONSTRAINT [DF_ddl_log_ts] DEFAULT (getdate()), SPID int, ServerName nvarchar(256), LoginName nvarchar(256), LoginType nvarchar(256), SID nvarchar(256), ClientHost nvarchar(256), IsPooled bit, [xx] [xml] NULL, DatabaseName nvarchar(256), CONSTRAINT [PK_ddl_log] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] go
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 CREATE TRIGGER logon ON all server FOR logon AS DECLARE @data XML SET @data = EVENTDATA() INSERT [test].[dbo].[ddl_log] ( SPID , ServerName , LoginName , LoginType , SID , ClientHost , IsPooled , xx , DatabaseName ) VALUES ( @data.value('(/EVENT_INSTANCE/SPID)[1]', 'nvarchar(256)'), @data.value('(/EVENT_INSTANCE/ServerName)[1]', 'nvarchar(256)'), @data.value('(/EVENT_INSTANCE/LoginName)[1]', 'nvarchar(256)'), @data.value('(/EVENT_INSTANCE/LoginType)[1]', 'nvarchar(256)'), @data.value('(/EVENT_INSTANCE/SID)[1]', 'nvarchar(256)'), @data.value('(/EVENT_INSTANCE/ClientHost)[1]', 'nvarchar(256)'), @data.value('(/EVENT_INSTANCE/IsPooled)[1]', 'nvarchar(256)') , @data , db_name() ) ; GO
J'ai toujours master comme DB_name... Ce qui n'est pas illogique puisque le trigger doit se déclencher sur master, j'imagine
Mais comment récupérer alors la bd que va utiliser ce user ?
Je suis ouvert à toutes propositions.
Partager