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

时间:2013-09-11 21:27:45

标签: sql sql-server security sql-server-2005 active-directory

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

6 个答案:

答案 0 :(得分:15)

检查您自己或当前用户:

SELECT IS_MEMBER('[group or role]')

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

要获取用户列表,请尝试使用xp_logininfo(如果已启用扩展触发器且相关组是Windows组:

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

答案 1 :(得分:5)

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

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]

答案 2 :(得分:3)

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


您可以使用Active Directory工具。我喜欢 Active Directory用户和计算机,它是Remote Server Administration Tools的一部分。按照链接在Windows 7上下载并安装这些工具。

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

Search

然后,您可以使用成员标签查看群组成员资格:

Members

如果您不想使用随RSA工具一起提供的AD浏览器,可以使用其他几种浏览器。

答案 3 :(得分:2)

你没有。

相反,您使用用户和组授予/拒绝权限,并让引擎适当地强制执行它们。尝试推出自己的安全措施将使您无法快速完成任务。一个平庸的例子就是当你没有兑现“一个否定胜过所有补助金”的规则时。而且你将无法浏览EXECUTE AS的复杂性。更不用说基于模块签名的安全性了。

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

答案 4 :(得分:1)

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

xp_logininfo 'DomainName\AD_GroupName', 'members'

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

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

答案 5 :(得分:0)

Microsoft页面here上提供的代码每次都对我有用。

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;

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