Sim, isso é exagero. A maneira mais fácil de fazer isso é conceder aos usuários direitos para executar todos os procedimentos no esquema (ou melhor ainda conceder um papel a esse direito).
Primeiro, crie uma nova função. Chame de YourAppRole (ou qualquer outra coisa, o nome realmente não importa). Torne sua conta de usuário um membro da função. Conceda à função direitos de execução para o esquema dbo (ou qualquer esquema em que os procedimentos estejam). Isso pode ser feito na interface do usuário ou via código.
GRANT EXEC ON SCHEMA::dbo TO YourAppRole
Ou você pode escrever um script T / SQL para seguir todos os procedimentos e conceder o direito. Tecnicamente, esta é uma opção mais segura.
DECLARE @proc sysname
DECLARE @cmd varchar(8000)
DECLARE cur CURSOR FOR select '[' + schema_name(schema_id) + '].[' + name + ']' from sys.procedures
OPEN cur
FETCH next from cur into @proc
WHILE @@FETCH_STATUS = 0
BEGIN
SET @cmd = 'GRANT EXEC ON ' + @proc + ' TO YourAppRole'
EXEC (@cmd)
FETCH next from cur into @proc
END
CLOSE cur
DEALLOCATE cur