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

在SQL Server中检查安全组中的用户,sql,sql-server,security,sql-server-2005,active-directory,Sql,Sql Server,Security,Sql Server 2005,Active Directory,在数据库的Security/Users文件夹中,我有一组安全组,包括“myapplicationusers”。我需要检查我是否(或其他用户是否)在这个组中,但我不知道如何查询它,也不知道在哪里可以看到这些信息。我试着在房子里找,但什么也找不到。有什么想法吗?是在SQL Server中获取此信息的首选解决方案 您可以为此使用Active Directory工具。我喜欢Active Directory用户和计算机,它们是系统的一部分。按照链接下载并安装Windows 7上的工具 安装后,您可以搜索

在数据库的Security/Users文件夹中,我有一组安全组,包括“myapplicationusers”。我需要检查我是否(或其他用户是否)在这个组中,但我不知道如何查询它,也不知道在哪里可以看到这些信息。我试着在房子里找,但什么也找不到。有什么想法吗?

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


您可以为此使用Active Directory工具。我喜欢Active Directory用户和计算机,它们是系统的一部分。按照链接下载并安装Windows 7上的工具

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

然后,您可以使用“成员”选项卡查看组成员资格:


如果您不想使用随RSA工具打包的广告浏览器,还可以使用其他几种工具。

检查您自己或当前用户:

SELECT IS_MEMBER('[group or role]')
结果1=是、0=否和null=查询的组或角色无效

若要获取用户列表,请尝试xp_logininfo,前提是已启用扩展进程,并且所涉及的组是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]

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

xp_logininfo 'DomainName\AD_GroupName', 'members'
通过使用此查询,我们可以找到以下状态

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

Microsoft页面上提供的代码每次都适用于我

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;

请让我知道这是否适合你

这正是我需要的!谢谢:)要打开此窗口,请在cmd
Rundll32 dsquery.dll OpenQueryWindow
中运行以下行。谢谢,这是我需要的。