SQL Server服务器登录和数据库用户

时间:2012-11-28 07:18:44

标签: sql-server

在工作中,我们使用AD组来控制对SQL Server数据库的访问。

我可以在Security > Logins(database) > Security > Users中看到这些群组。

问题是某些数据库有50多个这样的AD组作为有效的登录/用户,我知道我是多个成员。

有没有办法可以确定我在哪个AD群组中登录?

2 个答案:

答案 0 :(得分:4)

您已有效登录所有这些内容。您将拥有授予您所属的每个组的所有个人权限的联合。

答案 1 :(得分:1)

有两个直接内置的命令可以帮助你找到你想要的东西:

首先,扩展过程XP_LoginInfo(至少自SS2000起可用)将显示允许特定登录连接到实例的所有连接路径

DECLARE @LoginName sysname
SELECT @LoginName = SYSTEM_USER

EXEC xp_LoginInfo @AcctName = @LoginName, @Option = 'all'

最后一列“权限路径”下显示的所有组名都是提供的LoginName所属的组。另请注意“特权”栏目;它会显示登录是否对该实例具有 admin 用户级别权限。

现在,函数fn_my_permissions(自SS2005起可用)将显示当前连接登录当前数据库服务器上的所有权限

SELECT * FROM fn_my_permissions(NULL, 'DATABASE');

SELECT * FROM fn_my_permissions(NULL, 'SERVER');

当Damien_The_Unbeliever在11/28/12作出回应时,基本上最终的权限列表是所有分配的权限 - 包括Grant和Deny - 到每个组的联合(以及单独显式添加ID的地方)<您通过执行xp_LoginInfo看到的em>权限路径。

所以答案基本上是当有多个允许的路径时,你没有完全连接任何一个组。相反,从本质上讲,你将它们全部连接起来。虽然SQL Server清楚地显示甚至没有说明权限的“联合”性质,但可以使用上述两个命令来推断它。

可以在MSDN here.

上找到大量有用的安全目录视图