得到SQLServer用户的继承列表实战演示

文章主要描述的是如何得到SQL Server用户的继承列表,我们大家都知道在实际开发中特别是在做权限管理的时候,我们经常要对对某个SQL Server用户的权限进行全面检索,本文给出SQL Server中的一个实例.

 

用户继承树

 

CREATE function getUserTree(@UserName sysname, SQL Server用户名

 

@Seq

 

在实际开发中,尤其是在做权限管理的时候,常常要对对某个用户的权限进行检索,本文给出SQL Server中的一个实例.

 

SQL Server用户继承树

 

CREATE function getUserTree(@UserName sysname, 用户名

 

@Seq bit 查找方式:0查找子孙 1.查找祖先

 

 
 
 
  1. )  
  2. returns @Result table(UserID sysname,UserName sysname,Level int)  
  3. as  
  4. begin  
  5. declare @UserId sysname  
  6. set @userId=user_id(@userName)   
  7. if @userid is null   
  8. begin  
  9. raiserror(''指定的用户名不存在'',16,1)  
  10. return  
  11. end  
  12. DECLARE @level int, @line char(20)  
  13. declare @stack table(item sysname, level int)  
  14. INSERT INTO @stack VALUES (@UserID, 1)  
  15. SELECT @level = 1 
  16. WHILE @level > 0  
  17. BEGIN  
  18. IF EXISTS (SELECT * FROM @stack WHERE level = @level)  
  19. BEGIN  
  20. SELECT @userId = item 
  21. FROM @stack  
  22. WHERE level = @level  
  23. insert into @Result values(@UserId,User_name(@userID),@level)  
  24. DELETE FROM @stack  
  25. WHERE level = @level  
  26. AND item = @userId  
  27. if @Seq=1 查找祖先  
  28. INSERT @stack  
  29. SELECT groupuid, @level + 1  
  30. FROM sysmembers  
  31. WHERE memberuid = @userId  
  32. else 查找子孙  
  33. INSERT @stack  
  34. SELECT memberuid, @level + 1  
  35. FROM sysmembers  
  36. WHERE groupuid = @userId  
  37. IF @@ROWCOUNT > 0  
  38. SELECT @level = @level + 1  
  39. END  
  40. ELSE  
  41. SELECT @level = @level - 1  
  42. END  WHILE   
  43. return   
  44. end  

实例:

 
 
 
  1. exec sp_addrole ''Users''  
  2. exec sp_addrole ''BusinessMan''  
  3. exec sp_addrolemember ''Users'',''BusinessMan''  
  4. exec sp_addrole ''Saler''  
  5. exec sp_addrolemember ''BusinessMan'',''Saler''  
  6. exec sp_addlogin ''OrderMan'',''OrderMan'',''lifeng''  
  7. exec sp_addrolemember ''Saler'',''OrderMan''  
  8. exec sp_grantdbaccess ''OrderMan'',''OrderMan''  
  9. select * from getUserTree(''OrderMan'',1)  

结果显示

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

这种方法,也在MRP/ERP系统中遍历BOM时使用

 

上述的相关内容就是对得到SQL Server用户的继承列表 的描述,希望会给你带来一些帮助在此方面。

 

【编辑推荐】

  1. SQL Server设定过滤条件提高索引效率
  2. SQL Server 2008 R2进入到RTM 会有哪些新特性?
  3. C#来对SQL Server存储过程进行创建
  4. SQL Server导入升级还有什么你没做?
  5. SQL Server索引的使用误区讲述

分享题目:得到SQLServer用户的继承列表实战演示
URL网址:http://www.hantingmc.com/qtweb/news24/420424.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联