TransactionScope-Fehler mit Sql Server 2000 - partner-Transaktions-manager deaktiviert hat seine Unterstützung für remote - /netzwerktransaktionen

Ich versuche zum einrichten einer einfachen Transaktion für meine Linq-to-Sql-Aktionen gegen meine Sql 2000-Datenbank. Mit TransactionScope sieht es wie folgt aus:

using (TransactionScope transaction = new TransactionScope())
{
    try
        {
        Store.DBDataContext dc = new Store.DBDataContext();
        Store.Product product = GetProduct("foo");
        dc.InsertOnSubmit(product);
        dc.SubmitChanges();
        transaction.Complete();
    }
    catch (Exception ex)
    {                
        throw ex;
    }
}

Aber ich bekomme immer folgenden Fehler:

Die partner-Transaktions-manager deaktiviert hat seine Unterstützung für remote - /netzwerktransaktionen. (Ausnahme von HRESULT: 0x8004D025)

Aber, wenn ich die Transaktion über eine herkömmliche Transaktion, es funktioniert gut. Damit dies gut funktioniert:

Store.DBDataContext dc = new Store.DBDataContext();
try
{
    dc.Connection.Open();
    dc.Transaction = dc.Connection.BeginTransaction();
    Store.Product product = GetProduct("foo");
    dc.InsertOnSubmit(product);
    dc.SubmitChanges(); 
    dc.Transaction.Commit();
}
catch (Exception ex)
{
    dc.Transaction.Rollback();
    throw ex;
}
finally
{
    dc.Connection.Close();      
    dc.Transaction = null;
}

Frage ich mich, ob die TransactionScope ist, etwas anderes zu tun unter der Decke, als meine zweite Umsetzung. Wenn nicht, was habe ich zu verlieren, nicht mit TransactionScope? Auch jegliche Hinweise auf das, was den Fehler verursacht wäre auch gut. Ich habe bestätigt, dass MS DTC ausgeführt wird, in beide sql server und auf meinem client-Rechner.

InformationsquelleAutor Bramha Ghosh | 2008-11-26

Schreibe einen Kommentar