You need to add
GRANT VIEW ANY DEFINITION to [user]
It should be work without sysadmin role. I created "test1" user and it was worked for me:
USE [master]
GO
CREATE LOGIN [test1]
WITH PASSWORD=N'test1',
DEFAULT_DATABASE=[master],
DEFAULT_LANGUAGE=[us_english],
CHECK_EXPIRATION=OFF,
CHECK_POLICY=OFF
GO
GRANT VIEW ANY DEFINITION to test1
GO