Honestamente, estoy un poco confundido por su descripción, así que hágamelo saber si estoy fuera de lugar aquí. Puedes probar esto a continuación. Otorgará acceso de ejecución a todos los procedimientos almacenados. Si solo necesita que el portero tenga acceso a un procedimiento almacenado, simplemente otorgue la ejecución en ese procedimiento almacenado. Si el procedimiento almacenado accede a datos de otras bases de datos, es posible que deba otorgar permisos en las tablas y que acceda fuera de su base de datos.
CREATE ROLE db_executor
GRANT EXECUTE TO db_executor
EXEC sp_addrolemember 'db_executor', 'gatekeeper'