• I suggest a hybrid method.

    Do something like the first method except that you begin new transactions only at certain record counts, for example, every 2000 values processed:

    record #1; record #2001; record #4001; etc.

    You can adjust the number up or down as needed to reduce locking.

    Every one in a separate transaction is huge overhead in creating and committing trans.

    All in one transaction is huge overhead if it has to rollback after doing a lot of inserts/updates.

    SQL DBA,SQL Server MVP(07, 08, 09) A socialist is someone who will give you the shirt off *someone else's* back.