2012-11-28 81 views
2

在工作中,我们使用AD组来控制对SQL Server数据库的访问。我可以看到Security > Logins(database) > Security > Users这些组。SQL Server服务器登录和数据库用户

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

有没有一种方法可以确定我登录的哪些AD组?

回答

4

你实际上是以所有人的身份登录的。您将拥有授予您所属每个组的所有单个权限的联合。

1

有2直截了当内置的可以与你在找什么帮助命令:

首先在扩展过程XP_LoginInfo(可至少从SS2000),将显示所有的连接路径特定的允许登录使用与

DECLARE @LoginName sysname 
SELECT @LoginName = SYSTEM_USER 

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

所有的最后一列“允许路径”下显示的组名称连接到该实例是所提供的LoginName是一部分群体。另请注意“特权”列;它会显示登录是否有管理员用户级别权限的实例。现在

,功能fn_my_permissions(因为SS2005提供)会告诉你当前连接的登录当前数据库服务器上的所有权限。

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

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

由于Damien_The_Unbeliever于12年11月28日作出回应,基本权限的最后名单是分配的所有权限的联盟 - 包括授予和拒绝 - 给每个组的(和单独的地方ID已经被明确添加)权限路径通过执行xp_LoginInfo可以看到。

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

可在MSDN上找到大量有用的安全目录视图here.

相关问题