在MS SQL Server 2012中,我可以通过特殊选项" WITH GRANT OPTION"来授予用户一些权限:
USE MyDatabase
GRANT ALTER ANY USER TO MyUser WITH GRANT OPTION
现在,如果我使用此用户登录服务器并检查其权限:
USE MyDatabase
SELECT HAS_PERMS_BY_NAME('MyDatabase', 'DATABASE', 'ALTER ANY USER')
它给了我的" 1"正如预期的那样(用户确实拥有" ALTER ANY USER"权限)。但是如何通过选项" WITH GRANT OPTION"来检查用户是否拥有此权限? 我预计可能是这样的:
USE MyDatabase
SELECT HAS_PERMS_BY_NAME('MyDatabase', 'DATABASE', 'ALTER ANY USER WITH GRANT OPTION')
但当然它不起作用......
答案 0 :(得分:2)
我认为您必须查询sys.database_permissions
:
select state from sys.database_permissions
where class_desc='DATABASE' and
permission_name='ALTER ANY USER' and
grantee_principal_id = DATABASE_PRINCIPAL_ID()
状态G
为普通赠款,W
为WITH GRANT OPTION