ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL Server中sysobjects含义及批量赋予权限的方法

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

原创 Linux操作系统 作者:tolywang 时间:2009-07-28 10:24:56 0 删除 编辑

 --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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13208712