SQLServer2008: 如何向用户名授予特权?

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

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

有没有一种方法可以用 SSMS 图形化地做到这一点?

382779 次浏览

如果希望给予用户所有读取权限,可以使用:

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

这在 用于 SQLServer 的 MSDN 联机丛书中都有很好的记录。

是的,你也可以用图形化的方式做到这一点——在 SSMS 中,进入你的数据库,然后在 Security > Users上右键点击你想要给予权限的用户,然后在底部的 Properties adn 上你可以看到“数据库角色成员”,在这里你可以将用户添加到 db 角色。

alt text

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

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

如下所示。它将使用户数据库所有者。

EXEC sp_addrolemember N'db_owner', N'USerNAme'