Autre idée, le TimeOut de chaque SqlCommand est également contrôlé individuellement, vous pouvez donc le contrôler avec la propriété CommandTimeOut.
command.CommandTimeout = 120;
Cependant, je vérifierais le plan d'exécution pour voir où il gaspille ou accapare les ressources de la base de données, je suggère cela juste pour l'expérimentation, pas en production.