I know this is late, but maybe it will help someone else.
This can happen when the transaction expires. You can increase the timeout for your transaction like this (use values corresponding to the expected length of your transaction). Code below for 15 minutes:
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new System.TimeSpan(0, 15, 0))) {
That's why it could work on batchsize 500, not 1000.
Anthony Queen Jan 29 '13 at 16:35 2013-01-29 16:35
source share