2010-01-22 4 views
0

Le code fonctionne correctement lors de la connexion à un serveur sql 2005 dbase. mais lors de la connexion à un serveur sql 2008 dbase, il échoue.SqlConnection.open() déclenche TransactionException 0xe0434f4d

scénario: Webservice se connecte d'abord à 2008 dbase fine. Puis, lors d'un appel dans un objet COM +, la connexion échoue.

projets récemment mis à jour à utiliser VS2008 et mis à niveau vers Sql Server 2008.

using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.Required, transactionTimeOut)) 
{  
    using (SqlConnection sqlConnection = new SqlConnection(DataConnection)) 
    { 
     try 
     { 
String command = "my_StoredProcedure"; 

using (SqlCommand sqlCommand = new SqlCommand(command, sqlConnection)) 
{ 
      sqlConnection.Open(); //- exception is throw right after this call in the COM+ object. 

Des idées là-bas?

Répondre

0

Il semble que vous manquez une manipulation SQLException

http://blogs.msdn.com/tess/archive/2006/04/27/584927.aspx

+0

J'ai un catch pour SQLException, mais ce type d'exception n'est pas levé. C'est de type TransactionException. – Larry

+0

spécifiquement, il s'agit d'une exception System.Transactions.TransactionException. L'exploration du contenu se termine par _COMPlusExceptionCode = 0xE0434F4D – Larry

+0

Créé UnhandledExceptionModule et ajouté à web.config. Ran mon code, et les mêmes résultats, sans entrée dans le journal des événements d'applications. Same System.Transactions.TransactionException levée. – Larry

0

Dans mon cas, les binaires déployés à plusieurs PC en réseau ont été exécutés bien, sauf de quelques machines. Toutes les exceptions dans le code ont été traitées mais malgré cela, 0xe0434f4d a été lancé juste après le début. L'application a toujours été lancée localement (pas de partage réseau), pas de problèmes évidents avec les autorisations, etc. L'application avait .NET 3.5 parmi ses exigences.

J'ai examiné la version .NET installée (sous-arborescence de registre bien connue HKLM\SOFTWARE\NET Framework Setup\NDP) et trouvé que la sous-clé v3.5\SP (ServicePack) n'est PAS à 1. Cela signifie que .NET 3.5 est installé, mais pas la dernière version publiée (SP1). Après downloading v3.5 SP1, en installant et en redémarrant le PC, le problème entier a disparu. Donc la clé était "pas n'importe quel .NET 3.5, mais le dernier .NET 3.5 doit être présent".