Удачный трюк в этом сценарии заключается в создании отдельной (настраиваемой) роли SQL Server, которая может выполнять только хранимые процедуры:
CREATE ROLE db_executor;
GRANT EXECUTE TO db_executor;
Эта роль теперь имеет разрешение на выполнение любой хранимая процедура в базе данных, в которой она была создана, и, кроме того: это разрешение также будет распространяться на любые будущие хранимые процедуры, которые вы можете создать позже в этой базе данных.
Теперь создайтепользователя в вашей базе данных и предоставьте ему только эту роль базы данных - этот пользователь сможет выполнять только хранимые процедуры - любые из них в вашей базе данных.
Если вы должны разрешить этому пользователювыполнить все хранимые процедуры - это очень удобный способ разрешить это (и вам не нужно постоянно обновлять разрешения при создании новых хранимых процедур).