Eu verificaria se suas atualizações estão dentro de uma transação. Se forem, isso poderia explicar por que ele morre após uma certa quantidade de dados "modificados". Você pode verificar o tamanho do seu "tempdb" como um indicador.
Também vi casos em que, durante transações de longa duração, o banco de dados morria quando há outros "usos" ao mesmo tempo, novamente devido à transacionalidade e aos níveis de isolamento inadequados usados.
Se você puder dividir seu trabalho em partes independentes não sobrepostas, talvez queira fazê-lo:como fazer o trabalho em partes por datas, intervalos de ID de objetos "raiz" etc.