2009-08-12 8 views
1

Je fais face à une situation intéressante où j'effectue de nombreuses mises à jour de base de données en une seule transaction. Si ces mises à jour échouent pour une raison quelconque, la transaction est annulée. Je crois que le code ci-dessus est généralement considéré comme le modèle standard pour effectuer des mises à jour de base de données au sein d'une transaction.IDbTransaction Rollback Timeout

Le problème auquel je suis confronté est que tandis que transaction.Rollback() est en cours d'émission à SQL Server, il expire également sur le client. Y a-t-il une façon de faire la distinction entre un délai d'attente pour l'exécution de la commande rollback et un délai d'expiration de cette commande?

Merci à l'avance, Ben

Répondre

0

Vous devez spécifier les prises particulières à savoir Regardez les différentes exceptions levées. S'il y a une erreur lors du traitement de la commande sql, alors une exception SqlException doit être lancée, donc attrapez les différentes exceptions pour différencier votre projet.

De plus, vous pourrait aussi attraper et programme pour

Exception - Une erreur est survenue en essayant de valider la transaction. InvalidOperationException - La transaction a déjà été validée ou annulée. -ou-- La connexion est rompue.

Andrew

+0

Bien sûr, je peux attraper l'exception de délai d'attente sans papier (et les autres) de l'appel de méthode transaction.Rollback(), mais comment exactement je savoir si l'annulation a eu lieu ou non. J'imagine que l'exception de timeout sera soulevée dans 2 scénarios différents; la première étant si la commande rollback n'a pas pu être envoyée à SQL Server et la seconde si la commande rollback a été émise, mais a pris trop de temps ... –

+0

J'ai vu une autre implémentation de votre exemple ci-dessus où il y a encore un essai l'appel de la méthode rollback, alors voici où vous pourrez récupérer les exceptions levées par la procédure d'annulation elle-même. Encore une fois, cela pourrait être une exception SQL si elle ne pouvait pas être annulée, une exception je pense pour un délai d'attente ou une opération invalide pour des erreurs liées à une transaction spécifique. –