Je reçois cette erreur (transaction distribuée terminée, soit enregistrez cette session dans une nouvelle transaction ou la transaction NULL.) Lorsque j'essaie d'exécuter une procédure stockée à partir de C# sur un Base de données SQL Server 2005 Je n'utilise pas activement/volontairement des transactions ou quoi que ce soit, ce qui rend cette erreur bizarre. Je peux exécuter la procédure stockée du studio de gestion et cela fonctionne très bien. D'autres procédures stockées fonctionnent également à partir de C#, il semble que ce soit celui-ci avec des problèmes. L'erreur revient instantanément, il ne peut donc pas s'agir d'un problème de dépassement de délai. Le code est le suivant:C# SQL Transaction distribuée terminée. Soit enregistrez cette session dans une nouvelle transaction, soit la transaction NULL
SqlCommand cmd = null;
try
{
// Make sure we are connected to the database
if (_DBManager.CheckConnection())
{
cmd = new SqlCommand();
lock (_DBManager.SqlConnection)
{
cmd.CommandText = "storedproc";
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Connection = _DBManager.SqlConnection;
cmd.Parameters.AddWithValue("@param", value);
int affRows = cmd.ExecuteNonQuery();
...
}
}
else
{
...
}
}
catch (Exception ex)
{
...
}
Ça m'a vraiment déconcerté. Merci pour toute aide
La seule raison pour laquelle je garde une seule connexion est que je fais une quantité assez importante d'insertions et que je ne veux pas avoir le ralentissement de l'ouverture des connexions à chaque fois. Je vais essayer cette méthode et voir à quel point c'est rapide. N'explique toujours pas pourquoi ce code de travail ne fonctionne plus, même si rien n'a changé. – mike
Oh aussi, dans Activity Monitor dans Management Studio, je peux voir 1 sous "Transactions ouvertes" pour ma connexion. Ce qui signifie qu'il y a une transaction qui traîne. Yat-il un moyen d'obtenir plus de détails sur la transaction ouverte? Merci pour l'aide. – mike
Les connexions ouvertes resteront généralement dans le pool pendant la durée de vie de l'application. le tuer complètement n'est pas facile à court de désactiver la mise en commun, sacrifiant les avantages de performance de la piscine. –