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) "It's a dog-eat-dog world, and I'm wearing Milk-Bone underwear." "Norm", on "Cheers". Also from "Cheers", from "Carla": "You need to know 3 things about Tortelli men: Tortelli men draw women like flies; Tortelli men treat women like flies; Tortelli men's brains are in their flies".