• 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

    ----------------------------------------------------