以下SQL批量产生授权的SQL语句,然后一起执行就可以了.select 'GRANT ALL ON '+name+' TO [角色名]' from sysobjects where xtype in ('U','P','V') and name not in ('[需回收权限的表,视图,存储过程]')
说明: 1.xtype in ('U','P','V')是指所有的表,存储过程,视图. 2.name not in.. 可排除掉需回收权限的对象.
不了解楼主数据库里dt_isundersourcecontrol_u是什么对象? 想排除掉的话,可以灵活使用where后面的条件,例如:where xtype in ('U','P','V') and name not in ('[需回收权限的表,视图,存储过程]') and name not like 'dt_%' --> 排除掉名称以'dt_'开头的对象.
--管好sql的用户,防止访问他不该访问的数据库(总控制,明细还可以控制他对于某个数据库的具体对象具有的权限)
--切换到你新增的用户要控制的数据库
use 你的库名
go
--新增用户
exec sp_addlogin 'test' --添加登录
exec sp_grantdbaccess N'test' --使其成为当前数据库的合法用户
exec sp_addrolemember N'db_owner', N'test' --授予对自己数据库的所有权限
--这样创建的用户就只能访问自己的数据库,及数据库中包含了guest用户的公共表
go
--删除测试用户
exec sp_revokedbaccess N'test' --移除对数据库的访问权限
exec sp_droplogin N'test' --删除登录
不知道有用不?
from sysobjects
where xtype in ('U','P','V') and name not in ('[需回收权限的表,视图,存储过程]')
1.xtype in ('U','P','V')是指所有的表,存储过程,视图.
2.name not in.. 可排除掉需回收权限的对象.
想排除掉的话,可以灵活使用where后面的条件,例如:where xtype in ('U','P','V')
and name not in ('[需回收权限的表,视图,存储过程]')
and name not like 'dt_%' --> 排除掉名称以'dt_'开头的对象.
dt_isundersourcecontrol_u 这样的对象是系统自带的,我也不知道干什么用的。你说的方法我会用。不过不太好,还有其他这样的对象呢。
这是什么对象?之前已经制定了表,存储过程,视图3种
如果要排除的对象很多,需授权的对象少于需回收权限的对象.那还是用name in好了.where xtype in ('U','P','V')
and name in ('[需授权给角色的对象]')
集中产生SQL语句的结果,然后用游标分句的执行.