2011-07-22 3 views
0

Nous avons un système qui possède à la fois un composant .NET et SQLServer. Le composant .NET est chargé de démarrer le processus et d'inclure les appels aux procédures stockées dans une transaction..NET + SQL Server 2005 - Comment annuler une transaction mais conserver le journal

Ce processus est effectué en utilisant principalement les procédures stockées sur la base de données, qui écrivent toutes dans notre propre table de journal. Le problème est que la transaction, démarrée dans le code .NET, englobera toutes les autres qui sont utilisées dans le code de la base de données, et si l'une des transactions enfant revient en arrière, la table de journal est supprimée.

Y a-t-il un moyen de conserver les journaux, en supprimant tout le reste?

Merci d'avance.

Répondre

0

Est-ce que les SavePoints de transaction peuvent vous aider?

C'est exactement données de solution de niveau de base:

Savepoints offer a mechanism to roll back portions of transactions. You create a savepoint using the SAVE TRANSACTION savepoint_name statement. Later, you execute a ROLLBACK TRANSACTION savepoint_name statement to roll back to the savepoint instead of rolling back to the start of the transaction.

vous pouvez également reffer à SqlTransaction.Save Méthode pour une solution C#, espérons que cela exatcly ce que vous cherchez:

Creates a savepoint in the transaction that can be used to roll back a part of the transaction, and specifies the savepoint name.

+0

Je n'ai pas oublié à ce sujet, je répondrai une fois que j'ai testé votre solution. – JoaoPSantos

2

Utilisation une variable de table pour stocker l'erreur: ceci n'est pas affecté par les transactions

Ou utilisez SET XACT_ABORT ON dans le processus qui annule implicitement et enregistre après erreur

+0

Je n'ai pas oublié à ce sujet, je répondrai une fois que j'ai testé votre solution. – JoaoPSantos

Questions connexes