You could add a identity column to the table, IDENTITY(1,1). This can be your guide for doing the updates in the table one batch at a time.
Borrowing on Jeff's tally table, the basic design goes like :
DECLARE@lowerID int=0, @higherID int, @maxID int;
SELECT@maxID = max(n) from tally;
SET@higherID = @lowerID +5000;
WHILE@lowerID<= @maxID
BEGIN
/* just to illustrate the concept */
select n from tally
where n between @lowerID and @higherID
/* here you would apply this to your table like so ... */
--update table yourtable
--set column_34 = ( CASE WHEN -- ... )
--where identityColumn Between @lowerID and @higherID
set @lowerID = @higherID+1;
set @higherID = @higherID+5000
END
You could also optionally include a checkpoint at the end of every batch with a waitfor delay
----------------------------------------------------