The original problem is: a user, who has the permission to create/alter view granted is getting this message when trying to perform either operation:
Cannot find the type 'nvarchar', because it does not exist or you do not have permission.
Through some internet digging I found it may be caused because he does not have GRANT REFERENCE permission on types. However,
select * from sys.types order by name
Returns over 2000 records, and GRANT REFERENCE command accepts a single type as parameter. How can I grant this user the reference permission for ALL types?