Les fils à votre client vont avoir très peu à voir avec le comportement de votre base de données. SQL Server est une base de données multi-utilisateurs, donc tout le monde peut faire n'importe quoi à la base de données sur une machine différente en même temps, et toute la sécurité des threads dans le monde ne va pas aider avec ça. SQL Server utilisera des verrous pour gérer la base de données pendant les transactions, afin de garantir que les règles ACID et toutes les contraintes de base de données sont gérées.
Généralement, lorsque vous exécutez des procédures stockées sur une même machine sur le même thread, elles sont séquentielles et ne peuvent pas entrer en conflit. Si vous avez plusieurs threads ou si vous utilisez les fonctionnalités asynchrones d'ADO.NET, les procédures peuvent interférer entre elles au sein de SQL Server, c'est-à-dire le blocage ou l'interblocage, mais SQL Server va gérer tout cela. Évidemment, dans ce scénario, tout code que vous avez dans votre application doit être threadsafe - ie vous ne pouvez pas utiliser le même handle IAsyncResult pour les deux requêtes, vous devez vous assurer que les deux threads ne tentent pas de modifier les mêmes données le résultat des complétions, etc.
Vous devez exposer vos exigences un peu plus clairement, car il s'agit de deux scénarios de verrouillage complètement différents.
Que font vos processus stockés? Si elles sont axées sur les transactions, peu importe le nombre de threads qui les exécutent simultanément. – Gabe