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

114

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

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

是否有一种使用SSMS图形化界面完成这个任务的方法?

3个回答

153

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

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

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

还有一个db_datawriter角色-它会给您的用户所有表的写入权限(插入,更新,删除):

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 Server的MSDN Books Online中有详细记录。

是的,您也可以通过图形界面完成操作——在SSMS中,进入您的数据库,然后点击Security > Users,右键单击要授予权限的用户,然后选择Properties,可以看到底部的“Database role memberships”选项,从而将用户添加到数据库角色中。

alt text


1
不知怎么的,我在SSMS的Security树中没有Users节点,只有Logins和Credentials。除此之外,为了使sp_addrolemember函数起作用,用户必须映射到相应的数据库,否则会出现"用户...在数据库中不存在"的错误(参考https://dev59.com/IWw05IYBdhLWcg3wcRiu - 查看接受答案的评论)。我可以通过用户的登录对象的属性来进行用户与数据库的映射。 - hello_earth
@marc_s,如何使用SSMS授予与特定表相关的权限? - CAD
1
@Chathuranga:阅读优秀的、免费提供的文档! - marc_s

67
如果你真的想让他们拥有所有权利:
use YourDatabase
go
exec sp_addrolemember 'db_owner', 'UserName'
go

21

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

EXEC sp_addrolemember N'db_owner', N'USerNAme'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接