Реализация транзакций через несколько баз данных

Я выполняю изменения данных в нескольких базах данных и хочу реализовать транзакцию, которая будет охватывать все изменения.

Вот что у меня сейчас есть:

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();
    }
}

Проблема в том, что вышеперечисленное ужасно потерпит неудачу, если исключение произойдет во времяCommit() (см. комментарий). Есть ли лучший способ сделать это?

Ответы на вопрос(4)

Ваш ответ на вопрос