Implementando transacciones sobre múltiples bases de datos

Estoy realizando cambios de datos en varias bases de datos y quiero implementar una transacción que cubra todos los cambios.

Esto es lo que tengo actualmente:

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

El problema es que lo anterior fallaría horriblemente si ocurriera una excepción durante unaCommit() (ver el comentario). ¿Hay alguna manera mejor de lograr esto?

Respuestas a la pregunta(4)

Su respuesta a la pregunta