MS SQL - User access to schema not data
You can grant &quot;View Definition&quot; permissions at the schema level in most SQL databases. I would create a new role in the database, for example schemareader, and assign permission like this:
GRANT SELECT, VIEW DEFINITION ON SCHEMA::[dbo] TO schemareader;