SQL Server 2008:如何授予用户名特权?


Answers:


139

如果要授予用户所有读取权限,则可以使用:

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

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

还有一个db_datawriter角色-为您的用户赋予所有表所有写权限(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权限。

这一切在SQL ServerMSDN联机丛书中都有很好的记录。

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

替代文字


不知何故,我在SSMS的“安全性”树中没有“用户”节点,只有“登录名和凭据”-除此之外,为了使sp_addrolemember工作,必须将用户映射到有问题的数据库,否则“ user ...不会数据库中存在“”(给出了错误提示(stackoverflow.com/questions/7232559/…-查看对已接受答案的注释)-我可以通过用户登录对象的属性来映射到用户数据库
hello_earth,2014年

@marc_s,如何使用SSMS授予与特定表相关的权限?
2014年

1
@Chathuranga:阅读优秀的免费文档!
marc_s 2014年


18

像下面这样。它将使用户成为数据库所有者。

EXEC sp_addrolemember N'db_owner', N'USerNAme'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.