2009-04-09 5 views
0

Exception: «transaction distribuée terminée Soit inscrire cette session dans une nouvelle transaction ou la transaction NULL »Qu'est-ce que cette erreur SQL signifie

Ceci est hapening dans un SProc en cours d'exécution sur une machine ayant à la fois SQL 2005 et SQL Server 2008 hébergé.

Le code C# ressemble à ceci

(using TransactionScope t = new TransactionScope()) 
{ 
    using(SqlConnection c= new SqlConnection(...)) 
    { 
     c.Open(); 
     DataContext1 ctx = new DataContext1(c);//Linq2SQL 
     c.StoreData(2,3);//Call Sproc 
    } 
} 

Sproc On dirait que ce

Select * Table where x=2 and y=3 
if(@@rowcount =0) 
    Insert into table values(2,3) 
end if 
+0

Pouvez-vous fournir plus de détails sur ce que vous faites? La présence de deux bases de données n'explique pas pourquoi une transaction distribuée est en cours de création. –

Répondre

3

Cette erreur est due à une défaillance de contrainte sur le devant DB. Votre transaction est annulée (ce qui signifie que rien ne se passe dans la base de données). Fondamentalement, c'est une erreur se produisant dans une transaction que nous ne pouvons pas identifier facilement sans plus d'informations. Postez votre requête

+0

C'est drôle, j'ai posté exactement le même texte de MSDN juste après vous. Regardé idiot ayant le même poste deux fois. – jerebear

+0

@jerebear Haha. Je suppose que cela semblait plus agréable à Google, plutôt que de dire "Google it". Peut-être devrions-nous apprendre aux hommes à pêcher? –

Questions connexes