Bonjour
J'aimerai savoir si il y a un moyen de connaitre toutes les connections à une base dans un laps de temps.
Je fais cette requête pour connaitre les users à un instant t
.Code:select * from master..sysprocesses
Merci à vous
Version imprimable
Bonjour
J'aimerai savoir si il y a un moyen de connaitre toutes les connections à une base dans un laps de temps.
Je fais cette requête pour connaitre les users à un instant t
.Code:select * from master..sysprocesses
Merci à vous
Bonjour,
++Code:
1
2
3
4
5 SELECT DB_NAME(dbid) AS database_name, COUNT(*) AS nb_sessions FROM master..sysprocesses GROUP BY DB_NAME(dbid)
Bonjour,
Merci encore pour votre réponse rapide. Avec cette requête, j'ai toute les connections à une base.
Maintenant ce que je cherche, c'est le même type de requête mais sur une journée par exemple pour pouvoir connaitre les pics de connexion.
J'ai pensé à faire un trigger qui après chaque insert dans la table master..sysprocesses remplit une table. du style
Est-ce la solution la plus simple?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 USE test GO CREATE trigger histo_session ON master..sysprocesses AFTER INSERT AS BEGIN SELECT SPID DB_NAME(dbid) AS database_name, COUNT(*) AS nb_sessions FROM master..sysprocesses, histo_session WHERE nt_domain like '%toto%' AND session.spid =! master..sysprocesses.spid GROUP BY DB_NAME(dbid) END GO
Merci encore
Vous êtes sur quelle version ?
Les solutions diffèrent en fonction de ce paramètre .
++
Et bien j'aimerai utiliser ce trigger sur du sql serveur2005 ou 2008
Bonjour,
A priori je dirai que dugdug travaille sous SQL Server 2000, parce que dès la version 2005, il n'est plus possible de modifier les tables et vues système.
D'autre part attacher un trigger à cette table me semble être une mauvaise idée : étant donné qu'elles est très souvent mise à jour, et que les triggers sont gourmands en ressources, cela risque de pénaliser les performances globales.
Pour éviter cela, vous pouvez par exemple mette en place une trace côté serveur en utilisant, dans la classe d'événements Security Audit, l'événement Audit Login et en ajoutant les colonnes donc vous avez besoin ;)
@++ ;)
Je viens de voir que vous êtes sous SQL Server 2005 ou 2008, et dans ce cas vous pouvez utiliser un trigger de connexion :
Je vous conseille de lire la rubrique MSDN consacrée à ce type de trigger (La même est dans la BOL) et de vous appuyer sur la fonction EVENTDATA().Code:
1
2
3
4
5
6
7 CREATE TRIGGER monTrigger ON ALL SERVER FOR LOGON AS BEGIN ... END
@++ ;)
Ok, je vais essayer de faire ce type de trigger (une première pour moi ;))
Je reviens vers vous pour voir si il est correct.
Merci encore
Una autre solution est de planifier une tâche qui prélève à intervalle r&égulier le nombre de connexion ouvertes sur le serveur et le stocke dans une table fonctionnelle. Ce sera plus facile à exploiter et moins couteux.
A +
Bon comme vous êtes sur SQL SErver 2005 les notifications services fonctionneront sans problème.. Cependant attention au passage 2008, si cela vous concerne car les notifications services sont une fonctionnalité qui a disparu sur la version 2008.
+