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

数据库 SQL Server
以下的的文章主要向大家讲述的是得到SQL Server用户的继承列表的实际操作方案,以下就是文章的主要内容的描述。

文章主要描述的是如何得到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.查找祖先

 

)  
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  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.

实例:

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)  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

结果显示

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

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

 

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

 

【编辑推荐】

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

2010-07-05 12:09:16

SQL Server

2010-07-14 09:41:26

SQL Server数

2010-06-18 10:25:49

SQL Server

2010-06-30 08:46:51

升级SQL Serve

2010-07-21 09:50:12

SQL Server子

2010-07-05 15:04:36

SQL Server删

2010-07-22 16:21:33

SQL Server使

2010-07-16 17:03:35

SQL Server

2010-07-14 10:03:40

SQL Server

2010-07-22 09:33:45

SQL Server全

2010-07-01 16:58:43

SQL Server

2010-07-21 17:07:42

SQL Server

2010-07-20 08:48:14

SQL Server

2010-09-13 14:03:58

2010-06-13 14:49:02

MySQL创建远程登陆

2010-07-20 17:47:12

2010-12-21 09:47:45

SQL Server

2014-03-17 10:34:48

SQL Server

2010-07-16 14:17:18

SQL Server

2010-10-20 15:27:00

SQL Server用
点赞
收藏

51CTO技术栈公众号