237
7.5 Blocages et deadlocks
tions se retrouvent au même moment entre leurs deux instructions, pour que les instructions suivantes soient fatales. Il est aisé, à partir de cet exemple, de comprendre
comment minimiser le risque de deadlock : réduire autant que possible la durée de ses
transactions, et éviter d’effectuer les mêmes opérations dans des ordres différents
(pour cela, il suffit de centraliser la logique des modifications dans une seule procédure stockée).
Malgré tout, une situation de deadlock est toujours possible, à plus forte raison si
vous devez maintenir des bases de données dont vous n’avez pas écrit les procédures.
Il est donc prudent de mettre en place une détection de deadlocks. C’est aisé en
créant une alerte de l’agent SQL qui vous notifie au déclenchement de l’erreur 1205.
Si vous commencez à rencontrer des deadlocks, vous avez quelques outils qui vous
permettent de remonter à la source du problème.
Analyse des verrous mortels
Les drapeaux de trace 1204 et 1222 activent un mode de rapport détaillé de deadlock.
Ils peuvent être utilisés séparément ou ensemble, pour afficher les informations de
deux façons différentes. Il n’est possible de les activer que globalement 1 , soit en les
ajoutant en paramètres de lancement de SQL Server : -T1204 ou -T1222, dans le
gestionnaire de configuration (voir figure 7.6)
Figure 7.6 — Paramètres de démarrage
1. En SQL Server 2000 ces flags étaient activables par session, ce n’est plus le cas en SQL Server 2005.
Précédent

- 249/334

Suivant