繁体   English   中英

在 SQL Server 中检查安全组中的用户

[英]Check users in a security group in SQL Server

在我的数据库的 Security/Users 文件夹中,我有一堆安全组,包括“MyApplication Users”。 我需要检查我(或其他用户)是否在该组中,但我不知道如何查询它或在哪里可以看到此信息。 我尝试查看属性,但找不到任何内容。 有任何想法吗?

检查自己或当前用户:

SELECT IS_MEMBER('[group or role]')

结果 1 = 是,0 = 否,而 null = 查询的组或角色无效。

要获取用户列表,请尝试 xp_logininfo 如果启用了扩展 procs 并且有问题的组是 windows 组:

EXEC master..xp_logininfo 
@acctname = '[group]',
@option = 'members'

快速查看当前用户所属的组/角色;

select
      [principal_id]
    , [name]
    , [type_desc]
    , is_member(name) as [is_member]
from [sys].[database_principals]
where [type] in ('R','G')
order by [is_member] desc,[type],[name]

DeanG 接受的答案是在 SQL Server 中获取此信息的首选解决方案


您可以为此使用 Active Directory 工具。 我喜欢作为远程服务器管理工​​具一部分的Active Directory 用户和计算机 按照链接在 Windows 7 上下载并安装这些工具。

安装后,您可以搜索特定的组名:

搜索

然后您可以使用“成员”选项卡查看组成员身份:

会员

如果您不想使用与 RSA 工具一起打包的 AD 浏览器,还有其他几种可用的。

要查找实例中的 AD 组成员,我们可以使用以下查询:

xp_logininfo 'DomainName\AD_GroupName', 'members'

通过使用此查询,我们可以找到以下状态。

account name, type, privilege, mapped login name, permission path

你没有。

相反,您使用用户和组来授予/拒绝权限,并让引擎适当地强制执行它们。 试图推出自己的安全措施会让你无处可去。 一个平庸的例子是,当您无法遵守“一个拒绝胜过所有授予”规则时。 而且您将无法驾驭 EXECUTE AS 的复杂性。 更不用说基于模块签名的安全性了。

记录:用户、角色和组在sys.database_principals目录视图中公开。 sys.fn_my_permissions将返回特定安全对象的当前上下文权限。

其设置在微软网页上的代码在这里工作对我来说,每一次。

SELECT DP1.name AS DatabaseRoleName,   
   isnull (DP2.name, 'No members') AS DatabaseUserName   
 FROM sys.database_role_members AS DRM  
 RIGHT OUTER JOIN sys.database_principals AS DP1  
   ON DRM.role_principal_id = DP1.principal_id  
 LEFT OUTER JOIN sys.database_principals AS DP2  
   ON DRM.member_principal_id = DP2.principal_id  
WHERE DP1.type = 'R'
ORDER BY DP1.name;

请让我知道这是否适合您!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM