Ce n'est probablement pas un problème avec votre code. C'est un bogue dans SQL Server. Ils ont eu un problème similaire dans SQL Server 2005. Cela ne s'est produit que dans des conditions qui étaient justes, donc très peu de gens l'ont vu et ceux qui l'ont vu étaient très confus.
Cela dit, voici quelques éléments à vérifier qui ont fonctionné pour d'autres personnes ayant le même problème :
- Recherchez les DataReaders qui ne sont pas fermés. Assurez-vous que vous faites myReader.Close() après avoir lu les lignes que vous voulez. Beaucoup de gens dansent sans fermer.
- Utilisez la classe native SqlTransaction au lieu d'OleDbTransactions dans la mesure du possible.
- Consultez vos transactions. Assurez-vous que vous validez/annulez proprement avant de fermer votre connexion.
- Utilisez Connection.BeginTransation plutôt que Connection.BeginDbTransaction