SQL Server,删除所有用户对表对象的访问权限

NaN*_*NaN 8 sql-server-2008 security

作为一项清理工作,我试图删除所有用户(包括非公共用户)对单个表对象(超级用户除外)的访问权限,并随后授予新的访问权限。有没有一种简单的方法可以在不使用系统表的游标的情况下删除对表的访问权限?

Tho*_*ger 4

该代码应该在下面工作:

declare 
    @user_name sysname,
    @deny_cmd nvarchar(500)

declare UserCursor cursor for
select name
from sys.database_principals
where type in ('U', 'S')
and name not in ('dbo', 'information_schema', 'sys')

open UserCursor

fetch next from UserCursor
into @user_name

while @@fetch_status = 0
begin
    set @deny_cmd = 
        'deny select, insert, update, delete on object::UberSecureTable
        to ' + @user_name

    exec (@deny_cmd)

    fetch next from UserCursor
    into @user_name
end

close UserCursor
deallocate UserCursor
Run Code Online (Sandbox Code Playgroud)

让我知道这是否符合您的要求。将UberSecureTable更改为您的实际表名称。