Implementieren von Transaktionen über mehrere Datenbanken

Ich führe Datenänderungen in mehreren Datenbanken durch und möchte eine Transaktion implementieren, die alle Änderungen abdeckt.

Das habe ich aktuell:

try
{
    db[1].begintransaction();
    db[1].ExecuteNonQuery();

    db[2].begintransaction();
    db[2].ExecuteNonQuery();

    ...

    db[N].begintransaction();
    db[N].ExecuteNonQuery();

    // will execute only if no exception raised during the process
    for (int a = 0; a < N; a++)
    {
        db[a].Commit();// what if there is an error/exception here
    }
}
catch
{
    for (int a = 0; a < N; a++)
    {
        db[a].RollBack();
    }
}

Das Problem ist, dass das oben genannte schrecklich fehlschlagen würde, wenn eine Ausnahme während einesCommit() (siehe den Kommentar). Gibt es einen besseren Weg, dies zu erreichen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage