如何检查用户是否具有WITH GRANT OPTION权限?

时间:2014-12-18 09:14:22

标签: sql sql-server

在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')

但当然它不起作用......

1 个答案:

答案 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为普通赠款,WWITH GRANT OPTION