【问题标题】:Get permissions for stored procedure in sql server 2005获取sql server 2005中存储过程的权限
【发布时间】:2010-11-28 12:15:09
【问题描述】:

如何在 sql server 2005 中获得存储过程的授予权限?

【问题讨论】:

    标签: sql sql-server sql-server-2005 security permissions


    【解决方案1】:
    SELECT
        OBJECT_NAME(major_id), USER_NAME(grantee_principal_id), permission_name
    FROM
        sys.database_permissions p
    WHERE
        OBJECT_NAME(major_id) = 'MyProc'
    

    如果你也想加入 sys.database_principalssys.objects,你可以调整它

    【讨论】:

    • 使用这个SELECT 命令,我发现我写的存储过程NO Permissions。我现在如何设置一个?
    • @jp2code 只是为了澄清一下,您的存储过程没有设置显式权限,但它会具有推断/继承权限,例如sysadmin 仍然可以执行它
    【解决方案2】:

    尝试(注意:不仅仅适用于存储过程):

    SELECT
        dp.NAME AS principal_name
            ,dp.type_desc AS principal_type_desc
            ,o.NAME AS object_name
            ,o.type_desc
            ,p.permission_name
            ,p.state_desc AS permission_state_desc
        FROM sys.all_objects                          o
            INNER JOIN sys.database_permissions       p ON o.OBJECT_ID=p.major_id
            LEFT OUTER JOIN sys.database_principals  dp ON p.grantee_principal_id = dp.principal_id
        WHERE o.NAME = 'YourProcedureName'
    

    【讨论】:

    • @gbn,是的,这是我不时使用的“垃圾”查询,查看最新编辑,我重新格式化并重新组织了连接
    【解决方案3】:

    有点离题,但是...您可以enable您开发数据库以“记住”它对不同对象的权限并在开发期间保留它们,无论您删除和创建对象的次数...

    【讨论】:

      猜你喜欢
      • 2010-09-30
      • 2013-06-10
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多