SQL Server 2005 : Détecter les blocages automatiquement (Blocked Process Threshold / Report)
SQL Server 2005 fournit un système de détection de blocage très bien pensé, permettant de fournir en XML au SQL Server Profiler (Générateur de Profils SQL Server) automatiquement des données relatives à un blocage sur le serveur.
Le principe :
Vous fournissez le délai au-delà duquel vous estimez qu'un processus X bloquant un processus Y est trop important.
Application :
On configure notre système pour nous fournir ce type d'information dans les options avancées de l'instance SQL Server concernée.
-- Affiche les options avancées
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
-- Indique le temps d'attente maxi à 10 secondes
EXEC sp_configure 'blocked process threshold', 10
RECONFIGURE
-- Masque les options avancée
EXEC sp_configure 'show advanced options', 0
RECONFIGURE
Une fois cela fait, ouvrez le SQL Server Profiler, choisissez un modèle de Trace vide, et sélectionnez l'évènement « Blocked Process Report » qui se situe dans la section « Errors and Warnings ».

On simule ensuite un blocage avec 2 sessions ouverte, la première requêtant la base de données pubs comme suit :
BEGIN TRAN
UPDATE pubs.dbo.authors
SET city = UPPER(city)
Et la seconde
SELECT * FROM pubs.dbo.authors
Au bout de 10 seconde (intervale configuré dans l'exeple) vous obtiendrez ce qui suit dans le SQL Server Profiler, vous permettant de diagnostiquer d'éventuels problèmes de blocages sur votre serveur.

Bon déblocage…
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :