À partir d'une application .NET 3.5 / C#, je voudrais attraper SqlException
mais seulement s'il est causé par des deadlocks sur une instance SQL Server 2008.
Le message d'erreur typique est Transaction (Process ID 58) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Pourtant, il ne semble pas y avoir de code d'erreur documenté pour cette exception.
Filtrer les exceptions en fonction de la présence du mot-clé deadlock dans leur message semble être une façon très moche d'atteindre ce comportement. Est-ce que quelqu'un connaît la bonne méthode pour le faire?
3 votes
J'ai (enfin) trouvé la documentation pour le code d'erreur : msdn.microsoft.com/en-us/library/aa337376.aspx. Vous pouvez également le trouver via SQL Server lui-même :
select * from master.dbo.sysmessages where error=1205