日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
得到SQLServer用戶(hù)的繼承列表實(shí)戰(zhàn)演示

文章主要描述的是如何得到SQL Server用戶(hù)的繼承列表,我們大家都知道在實(shí)際開(kāi)發(fā)中特別是在做權(quán)限管理的時(shí)候,我們經(jīng)常要對(duì)對(duì)某個(gè)SQL Server用戶(hù)的權(quán)限進(jìn)行全面檢索,本文給出SQL Server中的一個(gè)實(shí)例.

 

用戶(hù)繼承樹(shù)

 

CREATE function getUserTree(@UserName sysname, SQL Server用戶(hù)名

 

@Seq

 

在實(shí)際開(kāi)發(fā)中,尤其是在做權(quán)限管理的時(shí)候,常常要對(duì)對(duì)某個(gè)用戶(hù)的權(quán)限進(jìn)行檢索,本文給出SQL Server中的一個(gè)實(shí)例.

 

SQL Server用戶(hù)繼承樹(shù)

 

CREATE function getUserTree(@UserName sysname, 用戶(hù)名

 

@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(''指定的用戶(hù)名不存在'',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  

實(shí)例:

 
 
 
  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)  

結(jié)果顯示

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

這種方法,也在MRP/ERP系統(tǒng)中遍歷BOM時(shí)使用

 

上述的相關(guān)內(nèi)容就是對(duì)得到SQL Server用戶(hù)的繼承列表 的描述,希望會(huì)給你帶來(lái)一些幫助在此方面。

 

【編輯推薦】

  1. SQL Server設(shè)定過(guò)濾條件提高索引效率
  2. SQL Server 2008 R2進(jìn)入到RTM 會(huì)有哪些新特性?
  3. C#來(lái)對(duì)SQL Server存儲(chǔ)過(guò)程進(jìn)行創(chuàng)建
  4. SQL Server導(dǎo)入升級(jí)還有什么你沒(méi)做?
  5. SQL Server索引的使用誤區(qū)講述

網(wǎng)頁(yè)名稱(chēng):得到SQLServer用戶(hù)的繼承列表實(shí)戰(zhàn)演示
文章位置:http://www.dlmjj.cn/article/djojshe.html