I also have to ask "WHY"? Why do you need to "batch" this instead of just doing all 2 million rows, which most servers can easily handle?
And the reason why we ask such questions is because it will help us identify the best way possible to accomplish your task while, at the same time, possibly get you thinking that there might be a better way.
For example, a lot of people have started posts with "I need to iterate over the rows of a table...". In most cases, it turned out that the use of such RBAR was totally unnecessary and a set-based solution turned out to be far superior to what the OP thought was necessary.