网页教学网
 当前位置: 网页教学网 >> 网络编程 >> 数据库编程技术 >> 做权限管理的时候,对某个用户的权限进行检索
[ HTML ] [ FW ] [ DW ] [ FP ] [ JS ] [ XML ] [ CSS ] [ 图象 ] [ FLASH ] [ .NET ] [ ASP ] [ JSP ] [ PHP ] [ 数据 ] [ 系统 ] [ 安全 ] [ 素材 ] [ 建站 ] [ 主机 ] [ 入门 ] [ 技巧 ]

做权限管理的时候,对某个用户的权限进行检索

http://www.webjx.com  更新日期:2007-09-07 07:25  出处:网页教学网  作者:

做权限管理的时候,对某个用户的权限进行检索。

--用户继承树

CREATE function getUserTree(@UserName sysname, --用户名
  @Seq bit   --查找方式:0查找子孙 1.查找祖先
  )
  returns @Result table(UserID sysname,UserName sysname,Level int)
  as
  begin
  declare @UserId sysname
  set @userId=user_id(@userName)
  if @userid is null
  begin
  --raiserror('指定的用户名不存在',16,1)
  return
  end
  DECLARE @level int, @line char(20)
  declare @stack table(item sysname, level int)
  INSERT INTO @stack VALUES (@UserID, 1)
  SELECT @level = 1
  WHILE @level > 0
  BEGIN
  IF EXISTS (SELECT * FROM @stack WHERE level = @level)
  BEGIN
  SELECT @userId = item
  FROM @stack
  WHERE level = @level
  insert into @Result values(@UserId,User_name(@userID),@level)
  DELETE FROM @stack
  WHERE level = @level
  AND item = @userId
  if @Seq=1 --查找祖先
  INSERT @stack
  SELECT groupuid, @level + 1
  FROM sysmembers
  WHERE memberuid = @userId
  else --查找子孙
  INSERT @stack
  SELECT memberuid, @level + 1
  FROM sysmembers
  WHERE groupuid = @userId
  IF @@ROWCOUNT > 0
  SELECT @level = @level + 1
  END
  ELSE
  SELECT @level = @level - 1
  END -- WHILE
  return
  end

实例:

  exec sp_addrole 'Users'
  exec sp_addrole 'BusinessMan'
  exec sp_addrolemember 'Users','BusinessMan'
  exec sp_addrole 'Saler'
  exec sp_addrolemember 'BusinessMan','Saler'
  exec sp_addlogin 'OrderMan','OrderMan','lifeng'
  exec sp_addrolemember 'Saler','OrderMan'
  exec sp_grantdbaccess 'OrderMan','OrderMan'
  select * from getUserTree('OrderMan',1)

结果显示:

UserID  USRENAME   Level
5   OrderMan     1
16402   Saler     2
16401   BusinessMan   3
16403   Users     4

关键词:数据库,权限
推荐给好友】【关闭】【收藏本文
最新五条评论
查看全部评论
评论总数 0
您的评论
用户名: 新注册) 密 码: 匿名:
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为