Have you tried a JOIN instead of the IN?
I've read there can be unexpected problems with cross-server queries.
SELECT --USE DISTINCT if there are multiple rows in vwCRMServiceProviderAccess
SP.[ServiceProviderGuid],
SP.[ServiceProviderTypeGuid],
SP.[ServiceProviderName],
SP.[ServiceProviderId],
SP.[MainPlant],
SP.[ServiceProviderParentGuid]
FROM ServiceProvider SP
JOIN vwCRMServiceProviderAccess SPA ON SP.[ServiceProviderGuid] = SPA.[ServiceProviderGuid]
WHERESPA.[UserGuid] = '4D569648-C703-47BA-BF66-D8E39F5C9D49'