2010-10-22 132 views

回答

121

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

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权限。

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

是的,你也可以做到这一点图形 - 在SSMS,去你的数据库,然后Security > Users,你想在你看到“数据库角色成员底部,为的权限,然后Properties ADN用户右键点击“你可以将用户添加到数据库角色。

alt text

+0

写什么>? – 2010-10-22 16:01:00

+0

不知何故,我没有SSMS中安全树中的用户节点,只有登录和凭证 - 除此之外,为了让sp_addrolemember工作,用户必须被映射到有问题的数据库,否则“用户...不存在于数据库“错误给出(http://stackoverflow.com/questions/7232559/mssql-giving-loginsusers-db-owner-access-to-database-看到接受的答案的评论) - 我可以给用户-db通过用户的登录对象的属性映射 – 2014-08-14 11:26:55

+0

@marc_s,如何使用SSMS授予与特定表相关的权限? – CAD 2014-10-12 07:00:56

56

如果你真的希望他们有版权所有:

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

像下面。它将使用户数据库所有者。

EXEC sp_addrolemember N'db_owner', N'USerNAme'