He buscado por todas partes y no he encontrado una respuesta concluyente a esta pregunta.
Necesito un script que pueda otorgar TODOS los permisos para un rol asociado.
¿Alguna idea, o es posible?
Esto me hace CERRAR, pero parece que no puedo darle la vuelta y dar el resumen de los roles, en lugar de los usuarios.
 WITH    perms_cte as
(
        select USER_NAME(p.grantee_principal_id) AS principal_name,
                dp.principal_id,
                dp.type_desc AS principal_type_desc,
                p.class_desc,
                OBJECT_NAME(p.major_id) AS object_name,
                p.permission_name,
                p.state_desc AS permission_state_desc
        from    sys.database_permissions p
        inner   JOIN sys.database_principals dp
        on     p.grantee_principal_id = dp.principal_id
)
--role members
SELECT rm.member_principal_name, rm.principal_type_desc, p.class_desc, 
    p.object_name, p.permission_name, p.permission_state_desc,rm.role_name
FROM    perms_cte p
right outer JOIN (
    select role_principal_id, dp.type_desc as principal_type_desc, 
   member_principal_id,user_name(member_principal_id) as member_principal_name,
   user_name(role_principal_id) as role_name--,*
    from    sys.database_role_members rm
    INNER   JOIN sys.database_principals dp
    ON     rm.member_principal_id = dp.principal_id
) rm
ON     rm.role_principal_id = p.principal_id
order by 1
                    
                        sql-server
                                sql-server-2008-r2
                                
                    
                    
                        elgabito
fuente
                
                
            fuente

No puedo encontrar la referencia, pero aquí hay un script muy descriptivo (lo he tenido en mi repositorio durante años, muy útil para la auditoría):
fuente
Creo que esto debería hacerlo, reemplace 'bla' con el nombre de su rol o un usuario de la base de datos (tenga en cuenta que los roles integrados no se muestran con ningún permiso):
fuente
Solo para agregar a la lista, tengo un par de SP sp_dbpermissions y sp_srvpermissions que se pueden usar para devolver el mismo tipo de información.
Tu puedes correr
Y consigue esto
(No puede verlo, pero el script de concesión está desactivado a la derecha en el tercer conjunto de datos y suelta / crea guiones a la derecha en el primer conjunto de datos).
fuente
Este es mi esfuerzo. Tengo un script más largo que recorre todos los DB también, avíseme si eso es más útil:
fuente
solo para agregar a la respuesta aceptada , un rol a veces puede pertenecer a otro rol.
fuente
Como esto volvió a aparecer a través del bot de la Comunidad, arrojaré mi script al sombrero ya que es bastante exhaustivo y no he encontrado nada que no esté identificado. La ventaja es que la salida está bien formateada y también permite roles de base de datos bastante extensos:
fuente