SQL Server中sysobjects含义及批量赋予权限的方法

 --1 赋予jrzsfc账号对所有用户表select,insert,update,delete权限

   DECLARE   ACUR   CURSOR   FOR  
   SELECT   name  FROM   SYSOBJECTS   WHERE   TYPE='U'  
   DECLARE   @NAME   VARCHAR(100)  
   DECLARE   @SQL   VARCHAR(512)  
   OPEN   ACUR  
   FETCH   NEXT   FROM   ACUR   INTO   @NAME  
   WHILE   @@fetch_status=0  
   BEGIN  
   EXEC   ('grant select,insert,delete,update ON ['+   @NAME+'] TO jrzsfc;')  
   FETCH   NEXT   FROM   ACUR   INTO   @NAME  
   END  
   CLOSE   ACUR  
   DEALLOCATE   ACUR

 

 --2 赋予jrzsfc对所有用户视图select,insert,update,delete权限
 
   DECLARE   ACUR   CURSOR   FOR  
   SELECT   name  FROM   SYSOBJECTS   WHERE   TYPE='V' and status>0
   DECLARE   @NAME   VARCHAR(100)  
   DECLARE   @SQL   VARCHAR(512)  
   OPEN   ACUR  
   FETCH   NEXT   FROM   ACUR   INTO   @NAME  
   WHILE   @@fetch_status=0  
   BEGIN  
   EXEC   ('grant select,insert,delete,update ON ['+   @NAME+'] TO jrzsfc;')  
   FETCH   NEXT   FROM   ACUR   INTO   @NAME  
   END  
   CLOSE   ACUR  
   DEALLOCATE   ACUR
 


 --3 赋予jrzsfc对所有procedure execute权限,剔除系统存储过程
   DECLARE   ACUR   CURSOR   FOR  
   SELECT   name  FROM   SYSOBJECTS   WHERE   TYPE='P' and name not like 'dt%'
   DECLARE   @NAME   VARCHAR(100)  
   DECLARE   @SQL   VARCHAR(512)  
   OPEN   ACUR  
   FETCH   NEXT   FROM   ACUR   INTO   @NAME  
   WHILE   @@fetch_status=0  
   BEGIN  
   EXEC   ('grant execute ON ['+   @NAME+'] TO jrzsfc;')  
   FETCH   NEXT   FROM   ACUR   INTO   @NAME  
   END  
   CLOSE   ACUR  
   DEALLOCATE   ACUR
 


 --4 赋予jrzsfc对所有標量值函数execute权限
   DECLARE   ACUR   CURSOR   FOR  
   SELECT   name  FROM   SYSOBJECTS   WHERE   TYPE='FN'
   DECLARE   @NAME   VARCHAR(100)  
   DECLARE   @SQL   VARCHAR(512)  
   OPEN   ACUR  
   FETCH   NEXT   FROM   ACUR   INTO   @NAME  
   WHILE   @@fetch_status=0  
   BEGIN
   EXEC   ('grant execute ON ['+   @NAME+'] TO jrzsfc;')  
   FETCH   NEXT   FROM   ACUR   INTO   @NAME  
   END  
   CLOSE   ACUR  
   DEALLOCATE   ACUR
 
 
 
 --5 賦予jrzsfc對表值函數select權限
 
   DECLARE   ACUR   CURSOR   FOR  
   SELECT   name  FROM   SYSOBJECTS   WHERE   TYPE='TF'
   DECLARE   @NAME   VARCHAR(100)  
   DECLARE   @SQL   VARCHAR(512)  
   OPEN   ACUR  
   FETCH   NEXT   FROM   ACUR   INTO   @NAME  
   WHILE   @@fetch_status=0  
   BEGIN
   EXEC   ('grant select ON ['+   @NAME+'] TO jrzsfc;')  
   FETCH   NEXT   FROM   ACUR   INTO   @NAME  
   END  
   CLOSE   ACUR  
   DEALLOCATE   ACUR

 

--------------------------------------------------------------

 

sysobjects中type的定义如下:

sysobjects是MSSQL数据库的系统表,在WEB权限下可以正常访问。
msysobjects是ACCESS数据库的系统表,在WEB权限下没有权限访问,会提示"没有权限访问"
我们在mssql的存储过程中经常要处理一些特殊的对象,这些对象都存放在数据库中的系统表sysobjects中,
并且通过type字段来分类管理,那么到底有哪些分类呢?


C=CHECK约束
D=默认值或Default约束
F=FOREIGN KEY约束
L=日志(Log)
FN=标量函数
IF=内嵌表函数
P=存储过程
PK=PRIMARY KEY约束(类型是 K)
RF=复制筛选存储过程
S=系统表
TF=表函数
TR=触发器
U=用户表
UQ=UNIQUE约束(类型是K)
V=视图
X=扩展存储过程

例如:
while exists(select from sysobjects where type='F')
begin
...
end
这里判断了数据库中是否存在外键约束

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-610598/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-610598/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值