J'essaie d'utiliser une transaction pour exécuter plusieurs commandes SqlCommands au sein d'une même connexion. J'utilise un exemple du lien suivant Use Batching in Sql to improve performance avec seulement une modification étant, j'ai ajouté try/catch pour chaque cmd.ExecuteNonQuery();
.Utilisation d'une transaction unique pour l'exécution de plusieurs commandes sql lorsque certaines commandes peuvent déclencher une exception
Je ne veux pas abandonner la transaction si une commande échoue et que je veux la gérer du côté de l'application. Et vouloir commettre des changements à la fin.
Mais lorsque nous recevons une exception lors de l'appel ci-dessus, l'objet Transaction est éliminé et j'obtiens une exception d'opération invalide à cause de cela lorsque j'essaie de valider à la fin. Tout pointeur sur la façon de valider la transaction même si certaines commandes ont échoué serait très utile.
Voici l'extrait que j'utilise.
using (SqlConnection connection = new SqlConnection(CloudConfigurationManager.GetSetting("Sql.ConnectionString")))
{
conn.Open();
SqlTransaction transaction = conn.BeginTransaction();
foreach (string commandString in dbOperations)
{
SqlCommand cmd = new SqlCommand(commandString, conn, transaction);
try{
cmd.ExecuteNonQuery();
}
catch(Exception ex){
//some exception handling.
}
}
transaction.Commit();
}
Il n'y a aucune raison d'utiliser la transaction ici. Supprimez simplement la transaction, cela fonctionne selon vos attentes. –
Pouvez-vous nous montrer quelques exemples de commandes que vous utilisez ensemble? – mjwills
Salut @selvakumar, sans la transaction, je vois un succès de la performance 3x. Mais si j'utilise la transaction et ne pas commettre, je ne reçois pas l'exception, mais pourrait voir une amélioration des performances. – Kiran