System.Data.SqlClient.SqlBulkCopy times out

If you are having timeout issues with SqlBulkCopy one of the first places to start is the BatchSize.

By default, SqlBulkCopy.BatchSize = 0 which copies ALL of the results before committing.

Setting the BatchSize to 1000 is a good place to start depending upon the size of your rows.