Crear en SQL Server un rol adicional para ejecutar stored procedures

Cómo crear un rol en SQL Server para poder dar a los usuarios fácilmente permisos para ejecutar stored procedures.

En SQL Server no existe un rol predefinido para que un usuario pueda ejecutar stored procedures, aparte del db_owner.

Si se trabaja con stored procedures y se quiere permitir a usuarios que no tengan porqué ser owners de una base de datos ejecutar procedimientos almacenados de la misma, se puede crear un rol específico con un grant de permisos de ejecución 'EXECUTE'.

Así después sólo hay que asignar ese rol a los usuarios que tengan que ejecutar stored procedures de una base de datos.

 

Es tan fácil como hacer algo así:

-- Crea un nuevo rol para ejecutar stored procedures
CREATE ROLE db_execute

-- Asigna permisos de ejecución de procedimientos almacenados al rol
GRANT EXECUTE TO db_execute

-- Agrega un usuario al recién creado rol db_execute role
EXEC sp_addrolemember 'db_execute', 'usuario'

Después de esto 'usuario' ya podrá ejecutar stored procedures de la base de datos en la que se ha creado el rol aunque no sea 'db_owner' de esa base de datos..