我在向我创建的服务器级角色授予适当的权限时遇到问题。每当该角色的用户尝试向其他用户授予权限时,我都会收到如标题所示的错误。我做了一些研究,并在授予角色权限时添加了授予选项,但这没有帮助。我希望将我的角色权限保持在执行给定脚本所需的最低水平。
这是我创建角色的方法
CREATE SERVER ROLE [My_Server_Role]
go
GRANT ALTER ANY LOGIN
,ALTER ANY SERVER ROLE
,CONNECT SQL
TO [My_Server_Role]
WITH GRANT OPTION
go
现在我已经像这样创建了一个用户(并且以同样的方式创建了第二个用户)
CREATE LOGIN JohnSmith
WITH PASSWORD = 'MyPassword'
CREATE USER JohnSmith
FOR LOGIN JohnSmith
EXEC sp_addsrvrolemember [My_Server_Role], [JohnSmith]
现在,我的问题是每当 JohmSmith 尝试执行
DENY CONNECT SQL TO [ThatOtherUser]
我已阅读将 WITH GRANT OPTIONS
添加到 CREATE ROLES
语句,但没有帮助。我可以将 CONTROL SERVER
添加到 MyServerRole
,但用户会获得太高的权限,并且能够共同控制其他数据库
有人可以帮忙吗?也许我把这个想法搞砸了。我的观点是仅向一个数据库授予用户(角色)权限,而且我不想使用内置服务器和数据库角色
最佳答案
对此您有两种解决方案:
1) 定义角色的AUTHORIZATION
( See here )
CREATE SERVER ROLE role_name [ AUTHORIZATION server_principal ]
角色名称
是要创建的服务器角色的名称。
授权 server_principal
是将拥有新服务器角色的登录名。如果未指定登录名,则服务器角色将由执行 CREATE SERVER ROLE
的登录名拥有。
服务器主体将能够授予该角色。
2) 使用控制角色
您可以将其添加到已授予权限的列表中。查看 this document 中的数据库角色权限部分:
关于sql - 授予者没有 GRANT 权限 - 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22554578/