Конечно, вы можете сделать это. Просто создайте роль базы данных на уровне базы данных и предоставьте эту роль для чтения в таблицах и выполняйте только те хранимые процедуры, которые вы хотите (т.е. те, которые читают). Затем добавьте нужных пользователей в роль базы данных.
Однако, учитывая все обстоятельства, если вы используете хранимые процедуры для чтения данных, делайте это полностью и не разрешайте чтение таблиц пользователям любого уровня. Управляйте всем доступом к данным через хранимые процедуры (и представления).
РЕДАКТИРОВАТЬ: Только что заметил, что вы сказали SQL 2005 "и выше". Если вы используете SQL Server 2008, обратите внимание на роли приложений вместо традиционных ролей базы данных.