• rather than put more work on the tempDb, you could create them a dedicated Staging Database and put this in simple mode so that log backups are not needed.

    Yes that is a good idea and would probably work

    If so, your approach could possibly work. But what about just eliminating the secondary update process. Figure out all the data and make it a single batch process instead of multi-pass operations?

    The process is quite complex from a business perspective ie working out loyalty points expiry for various periods and tiers.

    So although it may be able to be done in a single batch I guess it has been broken down into many staging tables for debugging / checking reasons.