What is the purpose of sqlbulkcopy's useinternaltransaction property?
If I understand you correctly:


You'd use BatchSize to break the load into chunks eg 10k rows
UseInternalTransaction determines if each batch is a transaction


So:


BatchSize = 0 -> UseInternalTransaction is irrelevant
BatchSize > 0 -> Apply UseInternalTransaction is specified


FYI, to monitor a SQL Server load in a non-blocking fashion

select count(*) from Mytable WITH (nolock)