RE: Change a users business unit for Online giving SQL timeout expired
You're right that the issue is probably because the user owns a lot of records. This is because CRM uses a derived column (owningbusinessunit) on user-owned entities, and this will have to be updated for all records in one transaction, and this can time out.
Unfortunately, I don't think there's a simple way around this in CRM Online. One possible option is to reassign the records to a different owner, then change the user's business unit, then reassign the records back. However, you'd need to record which records were owned, so that you can reassign them back, and you'd need to build a process to do the reassigning per entity.
Alternatively, if the ownership of many of the owned records doesn't matter, you could try just reassigning those that don't matter, then seeing if this is sufficient to allow you the change the businessunit