Ако не можете да получите планирано време за престой....
създайте две нови колони:nvarchar(max)processedflag INT DEFAULT 0
Създайте неклъстъриран индекс върху processedflag
Имате на разположение UPDATE TOP (искате да актуализирате горната част, подредена по първичния ключ).
Просто задайте processedflag на 1 по време на актуализацията, така че следващата актуализация да се актуализира само там, където обработеният флаг все още е 0
Можете да използвате @@rowcount след актуализацията, за да видите дали можете да излезете от цикъл.
Предлагам да използвате WAITFOR за няколко секунди след всяка заявка за актуализиране, за да дадете възможност на други заявки да придобият ключалки на таблицата и да не претоварват използването на диска.