2009-10-12 9 views
0

Je reçois l'erreur suivante de manière aléatoire lors de l'exécution du code à partir du mode de débogage.Erreur aléatoire TransactionScope en mode débogage

Cannot access a disposed object. 
Object name: 'SqlDelegatedTransaction'. 
  • erreur est jeté après quelques commandes ont été exécutées instantanément, pas un problème de délai d'attente
  • J'ai juste une transaction, a ouvert avec

    en utilisant (var portée = new TransactionScope (TransactionOption .Required))

  • Plusieurs connexions sont ouvertes avec la même instruction ci-dessus dans le code imbriqué.

  • J'utilise SQLServer 2008

Quoi de mal?

+2

Vous devez ajouter quelques détails: montrez plus de code, à quelle ligne de votre code cette erreur se produit-elle? que faisiez-vous/déboguiez-vous (peut-être changer la 'ligne à exécuter' à l'intérieur de ce bloc en utilisant?). –

+0

Essayez-vous d'appeler quoi que ce soit après avoir quitté le bloc using? Après un bloc using, l'objet est diposé. Je vous recommande de parcourir votre code et de vérifier que vous n'avez pas accidentellement quitté le bloc using avec un '}' mal placé. –

Répondre

0

Lorsque vous utilisez TransactionOption.Required, la transaction rejoint la transaction ambiante.

Une théorie possible est:

  • Si vous passez par le cadre de la transaction et n'appelez pas scope.Complete(), il disposera de la transaction abmient. Le code suivant qui essaie de s'exécuter sur la base de données échouera.

Une autre aurait des problèmes en ce qui concerne les jeux de résultats actifs:

  • Vous utilisez SQL Server 2000, qui ne prend pas en charge plusieurs ensembles de résultats actifs (MARS)
  • Est-ce que votre chaîne de connexion spécifier MultipleActiveResultSets = true
Questions connexes