Bonjour,

Savez-vous s'il existe un moyen permettant de filtrer, par exemple par leurs noms, les bases de données dont on veut surveiller l'événement "Blocked Process", par le Service Broker.

D'après moi, je devrais rajouter quelque chose dans l'instruction ci-après, mais je ne sais pas si c'est possible, et si oui, comment (Syntaxe ?) :

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
CREATE EVENT NOTIFICATION EventNotificationServerBlockedProcess
ON SERVER
FOR BLOCKED_PROCESS_REPORT
TO SERVICE
	'ServiceQueueBlockedProcess',
	'current database'
GO
En fait, j'ai l'habitude de mettre en œuvre le Service Broker pour surveiller les "Blocked Process". Tout marche bien.
Le problème est que certains environnement peuvent contenir plusieurs dizaines (voire même plusieurs centaines ! mais là c'est un autres sujet !) de bases données et je ne veux pas générer (ni gérer) trop d'événements "Blocked Process". Je veux cibler uniquement quelques bases représentatives, par exemple cibler 4 ou 5 bases de données représentatives que je désignerais par leurs noms.

Remarque :
- Comme vous le savez déjà, dans l'instruction ci-dessus, le terme 'current database', n'a rien avoir, il ne désigne en aucun cas la base cible à surveiller. Il désigne la base courante en tant que bases "technique" ou "support" pour gérer les événements "Blocked Process".

- Je pourrais gérer cela au niveau de la réponse à l'événement, c'est à dire, au niveau de la procédure d'activation (ACTIVATION > PROCEDURE_NAME) de la "Queue" (voir script ci-dessous), mais cela ne me parait pas une bonne solution puisque les événements auront été déjà générés par le système et je ne ferais qu'ignorer certains d'entre-eux (enfin, ignorer presque la totalité soit 99%).

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
ALTER QUEUE dbo.QueueBlockedProcessNotification
	WITH
		STATUS = ON,
		RETENTION = OFF,
		ACTIVATION
		(
			STATUS = ON,
			PROCEDURE_NAME = dbo.BlockedProcess_ServiceBroker_Activation,
			MAX_QUEUE_READERS = 1,
			EXECUTE AS OWNER
		)
Merci pour vos réponses éclairées.

A+