For certain size of data, SqlBulkCopy.WriteToServer() may throw a timeout exception, although it won’t happen when MARS is turned on.
The problem is caused by a bug in the code for handling some boundary scenarios. The workaround is to apply this patch: