【问题标题】:SQL Server 2008: how do I grant privileges to a username?SQL Server 2008:如何向用户名授予权限?
【发布时间】:2011-04-29 06:10:41
【问题描述】:

我需要能够通过 SQL Server 身份验证建立 ODBC 连接。

在 SSMS 中,如何授予用户对特定数据库拥有 ALL RIGHTS 权限的权限?

有没有办法使用 SSMS 以图形方式执行此操作?

【问题讨论】:

    标签: sql sql-server sql-server-2008 ssms


    【解决方案1】:

    如果你想给你的用户所有读取权限,你可以使用:

    EXEC sp_addrolemember N'db_datareader', N'your-user-name'
    

    这会将默认的db_datareader 角色(所有表的读取权限)添加到该用户。

    还有一个 db_datawriter 角色 - 它为您的用户提供所有表的所有 WRITE 权限(INSERT、UPDATE、DELETE):

    EXEC sp_addrolemember N'db_datawriter', N'your-user-name'
    

    如果需要更细化,可以使用GRANT命令:

    GRANT SELECT, INSERT, UPDATE ON dbo.YourTable TO YourUserName
    GRANT SELECT, INSERT ON dbo.YourTable2 TO YourUserName
    GRANT SELECT, DELETE ON dbo.YourTable3 TO YourUserName
    

    等等 - 您可以精细地授予特定表的 SELECT、INSERT、UPDATE、DELETE 权限。

    这在MSDN Books Online for SQL Server 中有很好的记录。

    是的,您也可以以图形方式执行此操作 - 在 SSMS 中,转到您的数据库,然后 Security > Users,右键单击您要授予权限的用户,然后在底部看到 Properties 和“数据库角色成员”,您可以在其中将用户添加到数据库角色。

    【讨论】:

    • 不知何故,我在 SSMS 的安全树中没有用户节点,只有登录和凭据 - 除此之外,为了使 sp_addrolemember 工作,用户必须映射到相关数据库,否则会给出“用户 ... 数据库中不存在”错误(stackoverflow.com/questions/7232559/… - 请参阅已接受答案的 cmets) - 我可以通过用户登录对象的属性映射到用户数据库
    • @marc_s,如何使用 SSMS 授予与特定表相关的权限?
    • @Chathuranga:阅读excellent, freely available docs!
    【解决方案2】:

    如果您真的希望他们拥有所有权利:

    use YourDatabase
    go
    exec sp_addrolemember 'db_owner', 'UserName'
    go
    

    【讨论】:

      【解决方案3】:

      如下所示。它将成为用户数据库的所有者。

      EXEC sp_addrolemember N'db_owner', N'USerNAme'
      

      【讨论】:

        猜你喜欢
        • 2011-02-13
        • 1970-01-01
        • 2011-03-25
        • 1970-01-01
        • 2011-09-07
        • 1970-01-01
        • 2016-01-18
        • 1970-01-01
        • 2014-06-25
        相关资源
        最近更新 更多