当前位置:首页 > 系统运维 > 正文内容

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

a8116255316年前 (2010-07-09)系统运维9

文章主要描述的是如何得到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 sy *** embers  WHERE memberuid = @userId  else 查找子孙  INSERT @stack  SELECT memberuid, @level + 1  FROM sy *** embers  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 

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

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

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://2345hao.cn/blog/index.php/post/21850.html

分享给朋友:

“得到SQL Server用户的继承列表实战演示” 的相关文章

windows 7系统如何设置休眠时不断网以便继续完成下载

windows 7系统如何设置休眠时不断网以便继续完成下载

在Windows 7系统的默认设置中,当Windows 7系统处于休眠状态时,会同时断网的。如此一来,无论你正在使用迅雷还是快车等下载工具,同样可以在休眠状态下继续完成下载,最大限度做到从身边的小事开始支持环保。下面我们就详细介绍操作步骤,帮助Windows 7系统用户实现这一节能目标。 首先需要...

Win 7系统中其他声音正常但酷狗音乐没声音怎么回事

Win 7系统中其他声音正常但酷狗音乐没声音怎么回事

故障现象: Windows 7酷狗软件无声音,系统声音正常。 原因分析: 1. 查看酷狗软件设置 2. 查看系统设置 解决方案: 1. Windows 7操作方法 如图:查看是否处于禁音状态   Windows 7系统声音正常酷狗音乐无声音 2. 查看设置音频输出是否...

windows 7旗舰版系统提示应用程序错误代码0xc0000409的故障原因

windows 7旗舰版系统提示应用程序错误代码0xc0000409的故障原因

问题现象,具体如下所示:  故障分析: 一般来说,出现这种情况是因为电脑误删系统文件或者是系统文件被顽固木马破坏。       解决方法: 1、下载360安全卫士,找到里面的急救箱开始急救,然后进行修复,完成后重新启动; 2、下载瑞...

windows 7怎么设置密码永不过期?

windows 7怎么设置密码永不过期?

下面小编以Windows 7 64位为例,介绍下密码是如何设置永不过期的。  1、在桌面上打开“开始”菜单,或者点击“Win+R”快捷键将“运行”对话框打开。  2、运行对话框打开后,在里面中输入“lusrmgr.msc”字符命令,就可以打开“本地用户和组程序”。...

windows 7 xp宋体 成功替换windows 7宋体为XP宋体的方法

windows 7 xp宋体 成功替换windows 7宋体为XP宋体的方法

很多朋友从XP升级迈入了Windows 7的殿堂,却发现,Windows 7确实好用和华丽,可是有一些地方不太适应。今天举出一则例子,是把Windows 7系统下的宋体替换为XP系统下的字体。这个并非无聊,大家去网上搜索下,就知道有多少人想要这么做了。 没办法,每人的需求总是那么的不同,好吧,怀旧...

windows 7任务栏快捷方式如何居中显示默认从左像右排列

windows 7任务栏快捷方式如何居中显示默认从左像右排列

使用Windows 7的朋友都知道,任务栏上的快捷方式图标都是靠近开始菜单按钮,从左像右排列,不过也有一些用户喜欢左右对称,想要把那些快捷方式居中显示,看起来这个任务好像无从下手,其实一点也不难,只要通过下面方法就能轻松搞定。 1、首先在电脑磁盘中任何一个地方新建一个文件夹。 2、右击任务栏-&...