2017-03-20 5 views
0

J'exécute plusieurs transactions SQL à partir de mon application ASP.NET. Une transaction exécute plusieurs procédures stockées les unes après les autres. Les transactions sont assez longues.Comment ré-exécuter toutes les commandes dans une instance SqlTransaction annulée?

Lorsque deux instances de mon application, à savoir deux processus différents, se connectent à une base de données, je rencontre parfois un problème d'interblocage SQL. Dans ce cas, SQL Server annule automatiquement une transaction à partir de n'importe quel processus.

Lorsque cela se produit, je veux exécuter toutes les commandes (procédures stockées) dans le SqlTransaction qui a été annulée.

Comment puis-je faire cela en C#?

Existe-t-il un moyen facile de ré-exécuter toutes les commandes dans une transaction SQL qui ont été exécutées avant que la transaction a été annulée par le serveur SQL?

Ou est-ce que je dois écrire ma propre logique pour "se souvenir" (et les exécuter à nouveau si nécessaire) toutes les procédures stockées que j'ai exécutées?

+3

Vous devez réessayer dans le code utilisateur. Donc, votre dernière déclaration sur "la propre logique" est correcte. –

Répondre

1

En fait, c'est une mauvaise pratique de le faire car en tant que dev vous devez trouver quel était le problème de rollback et corriger cela même si je dirais déclarer un drapeau de int et l'augmenter après chaque exécution sp quand quelque chose se passe mal Dans la section catch où vous avez écrit la restauration, appelez le sps en fonction du drapeau. Encore une fois c'est une mauvaise pratique de le faire

+1

En principe, vous avez raison. Mais parfois, vous devez écrire un code défensif comme celui-ci, surtout lorsque vous rencontrez des problèmes comme le blocage SQL et que vous ne pouvez pas effectuer les modifications nécessaires au niveau de la base de données pour diverses raisons techniques et non techniques. – Learner

+0

ouais c'est vrai mais pour éviter les interblocages, vous devez configurer votre base de données avec vos besoins en réglant les niveaux d'isolation en réglant les verrous en conséquence pour éviter des situations comme celles-ci –