ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQLSERVER批量授权

SQLSERVER批量授权

原创 Linux操作系统 作者:sanxiagirl 时间:2009-08-02 10:12:03 0 删除 编辑

将某用户下所有用户表增删查改权限授予另一个用户

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 username;')  
   
  FETCH   NEXT   FROM   ACUR   INTO   @NAME  
   
  END  
   
  CLOSE   ACUR  
  DEALLOCATE   ACUR

如果要将VIEW,FUNCTION,PROCEDURE等数据对象授权给其它用户,只需更改SELECT   name  FROM   SYSOBJECTS   WHERE   TYPE='U'   TYPE的类型和grant相应的权限即可.

VIEW:

  SELECT   name  FROM   SYSOBJECTS   WHERE   TYPE='V'   and status>0

PROCEDURE:

  SELECT   name  FROM   SYSOBJECTS   WHERE   TYPE='P'   and name not like 'dt%'(sysobjectstype='P'的包括系统存储过程,按照几台DB上规律,dt开头的都是系统存储过程,所以此处我用name not like 'dt%'来剔除系统存储过程,不一定完全准确.)

  EXEC   ('grant execute ON ['+   @NAME+'] TO username;')

标量函数:

  SELECT   name  FROM   SYSOBJECTS   WHERE   TYPE='FN'

  EXEC   ('grant execute ON ['+   @NAME+'] TO username;')  

表值函数:

  SELECT   name  FROM   SYSOBJECTS   WHERE   TYPE='TF'

  EXEC   ('grant select ON ['+   @NAME+'] TO username;')  

 

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

下一篇: EXP导出错误
请登录后发表评论 登录
全部评论

注册时间:2008-01-02

  • 博文量
    142
  • 访问量
    496598