Jag skulle kontrollera om dina uppdateringar är inom en transaktion. Om de är det kan det förklara varför det dör efter en viss mängd "modifierad" data. Du kan kolla hur stor din "tempdb" blir som en indikator.
Jag har också sett fall då databasen under långvariga transaktioner skulle dö när det finns andra "användningar" samtidigt, återigen på grund av transaktionalitet och felaktiga isoleringsnivåer som används.
Om du kan dela upp ditt jobb i oberoende icke-överlappande bitar, kanske du vill göra det:som att göra jobbet i bitar efter datum, ID-intervall för "root"-objekt etc.