Я не уверен, что выбрал правильное название для этого вопроса. Что мне действительно нужно, так это то, что для отдельного пользователя Windows AD я хотел бы узнать список групп Windows AD (учетных записей), которые имеют доступ к определенной базе данных на этом сервере.
когда я запускаю следующий запрос
select
name,
principal_id,
type,
type_desc,
default_schema_name,
create_date,
modify_date,
owning_principal_id,
sid,
is_fixed_role
from sys.database_principals
на моем сервере
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 17 июня 2011 г. 00:54:03 Авторское право (c) Microsoft Corporation Standard Edition (64-разрядная версия) в Windows NT 6.1 (сборка 7601: пакет обновления 1)
Я получаю следующие результаты (неполный список):
Мне нужно знать все разрешения, которые имеет конкретный логин. этот логин имеет доступ к моему серверу / базам данных через группы AD.
1) к каким группам AD из моего списка относится мой логин?
Ниже я делаю это, но мне бы очень хотелось узнать список групп AD (которые имеют доступ к этому серверу в соответствии с рисунком выше), к которым принадлежит этот пользователь.
Сначала я выполняю как пользователь, о котором идет речь
EXECUTE AS LOGIN='mycompany\HThorne'
DECLARE @User VARCHAR(20)
SELECT @USER = SUBSTRING(SUSER_SNAME(),
CHARINDEX('\', SUSER_SNAME()) + 1, LEN(SUSER_SNAME()))
я удостоверяюсь, что у меня есть правильные полномочия
SELECT @USER
, SUSER_SNAME()
,SYSTEM_USER
, USER_NAME()
, CURRENT_USER
, ORIGINAL_LOGIN()
, USER
,SESSION_USER
Я иду в конкретную базу данных и использую fn_my_permissions - запускаю как рассматриваемый пользователь
use WebDataImportStage
go
SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
GO
REVERT
и это дает мне результат ниже: