Tu problema viene por el timeout de la base de datos o de tu aplicacion..?? si es por BD puedes hacer un pooling de conecciones y aparte hacer un timeout mas grande para ese tipo de transacciones.. date una vuelta por aqui:
http://www.15seconds.com/issue/040830.htm
Salu2 y espero que te sirva..