代码之家  ›  专栏  ›  技术社区  ›  Brandi

SQL选择权限

  •  1
  • Brandi  · 技术社区  · 16 年前

    我有一个数据库需要连接到它并从中选择。我有一个SQL登录名,我们称之为myusername。当我使用以下选项时,不显示选择权限:

    SELECT * FROM fn_my_permissions ('dbo.mytable', 'OBJECT')
    GO
    

    我试过几次,比如:

    USE mydatabase
    GO
    
    GRANT SELECT TO myusername
    GO
    
    GRANT SELECT ON DATABASE::mydatabase TO myusername
    GO
    
    GRANT SELECT ON mytable TO myusername
    GO
    

    它表示查询执行成功,但在第一个查询中没有任何区别。我缺少授予数据库级选择权限的简单方法。

    请注意,我双重确认了它是正确的用户、正确的数据库,并且我已经尝试授予表级选择权限。到目前为止,我一直在出错:

    SELECT permission denied on object 'mytable', database 'mydatabase', schema 'dbo'.
    

    你知道我遗漏了什么吗?事先谢谢。

    编辑/更新:

    右键单击SQL Server Management Studio 2008中的SQL用户后,我发现每个数据库角色都被选中,包括db_denydatareader和db_datareader…这会妨碍我在数据库级别授予权限吗?如果是这样的话,那么DB的目的是什么?在我看来,当查询权限时,有一个不能查看的“拒绝”是愚蠢的。

    总结: 当然,这解决了问题。

    2 回复  |  直到 16 年前
        1
  •  3
  •   Brandi    16 年前

    在ssms-数据库下-->mydatabase-->安全-->用户-->myusername,右键单击用户名,选择属性。在“数据库角色成员资格”下,确保未选中db_dyDataReader,因为这将覆盖您授予的任何权限。

    知道这很简单。:)

        2
  •  0
  •   ajdams    16 年前

    是否尝试重新连接该SQL用户帐户?