开发者社区> 问答> 正文

如何使用TSQL确定授予了哪些角色对特定存储过程的执行权限?

如何使用TSQL确定授予了哪些角色对特定存储过程的执行权限?我可以使用系统存储过程或系统视图吗?

展开
收起
心有灵_夕 2019-12-28 23:12:08 712 0
1 条回答
写回答
取消 提交回答
  • 在7.0或2000中,您可以修改和使用以下代码:

    SELECT convert(varchar(100),
            'GRANT ' +
            CASE         WHEN actadd & 32 = 32 THEN 'EXECUTE'
                    ELSE
                            CASE WHEN actadd & 1 = 1   THEN 'SELECT' + CASE WHEN actadd & (8|2|16) > 0  THEN ', ' ELSE '' END ELSE '' END +
                            CASE WHEN actadd & 8 = 8   THEN 'INSERT' + CASE WHEN actadd & (2|16) > 0  THEN ', ' ELSE '' END ELSE '' END +
                            CASE WHEN actadd & 2 = 2   THEN 'UPDATE' + CASE WHEN actadd & (16) > 0  THEN ', ' ELSE '' END ELSE '' END +
                            CASE WHEN actadd & 16 = 16 THEN 'DELETE' ELSE '' END
            END + ' ON [' + o.name + '] TO [' + u.name + ']') AS '--Permissions--'
    FROM syspermissions p
    INNER JOIN sysusers u ON u.uid = p.grantee
    INNER JOIN sysobjects o ON p.id = o.id
    WHERE o.type <> 'S'
    AND o.name NOT LIKE 'dt%'
    --AND o.name = '<specific procedure/table>'
    --AND u.name = '<specific user>'
    ORDER BY u.name, o.name
    
    2019-12-28 23:12:27
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载