新聞中心
文章主要描述的是如何得到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.查找祖先
- )
- 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(''指定的用戶(hù)名不存在'',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
實(shí)例:
- 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)
結(jié)果顯示
- UserID USRENAME Level
- 5 OrderMan 1
- 16402 Saler 2
- 16401 BusinessMan 3
- 16403 Users 4
這種方法,也在MRP/ERP系統(tǒng)中遍歷BOM時(shí)使用
上述的相關(guān)內(nèi)容就是對(duì)得到SQL Server用戶(hù)的繼承列表 的描述,希望會(huì)給你帶來(lái)一些幫助在此方面。
【編輯推薦】
- SQL Server設(shè)定過(guò)濾條件提高索引效率
- SQL Server 2008 R2進(jìn)入到RTM 會(huì)有哪些新特性?
- C#來(lái)對(duì)SQL Server存儲(chǔ)過(guò)程進(jìn)行創(chuàng)建
- SQL Server導(dǎo)入升級(jí)還有什么你沒(méi)做?
- SQL Server索引的使用誤區(qū)講述
網(wǎng)頁(yè)名稱(chēng):得到SQLServer用戶(hù)的繼承列表實(shí)戰(zhàn)演示
文章位置:http://www.dlmjj.cn/article/djojshe.html


咨詢(xún)
建站咨詢(xún)
