我有一个角色,它在各种表上有一些选择权限。我想删除该角色在所有表中拥有的所有选择权限。例如,
revoke all from my_role_name;
但这似乎不起作用。我怎样才能做到这一点?
最佳答案
我只是需要这样做。
您可以使用以下内容
DECLARE @RevokeScript NVARCHAR(MAX);
DECLARE @PrincipalName SYSNAME = 'my_role_name'
SELECT @RevokeScript = STRING_AGG(CAST('REVOKE ' + permission_name
+ CASE class_desc
WHEN 'OBJECT_OR_COLUMN' THEN ' ON ' + QUOTENAME(OBJECT_SCHEMA_NAME(major_id)) + '.' + QUOTENAME(OBJECT_NAME(major_id))
WHEN 'SCHEMA' THEN ' ON SCHEMA::' + SCHEMA_NAME(major_id)
WHEN 'DATABASE' THEN ''
END
+ ' TO ' + QUOTENAME(@PrincipalName) COLLATE SQL_Latin1_General_CP1_CI_AS AS NVARCHAR(MAX)), ';')
FROM sys.database_permissions AS pe
WHERE pe.grantee_principal_id = DATABASE_PRINCIPAL_ID (@PrincipalName);
PRINT @RevokeScript
EXEC (@RevokeScript)
关于sql-server - 如何撤销角色在sql server中拥有的所有权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56128769/