Доступ к членству в роли Active Directory через LDAP с использованием SQL Server 2005 - PullRequest
1 голос
/ 28 апреля 2010

Я хотел бы получить список пользователей Active Directory вместе с группами безопасности, в которые они входят, используя связанные серверы SQL Server 2005. У меня есть запрос на получение записей, но я не уверен, как получить доступ к атрибуту memberOf (это многозначный атрибут LDAP).

У меня есть это временное хранилище информации:

DROP TABLE #ADUSERGROUPS
CREATE TABLE #ADUSERGROUPS 
(
sAMAccountName varchar(30),
UserGroup varchar(50)
)

Каждая групповая / пользовательская ассоциация должна состоять из одной строки.

Это мое утверждение SELECT:

SELECT sAMAccountName,memberOf
FROM OpenQuery(ADSI, '<LDAP://hqdc04/DC=nt,DC=avs>;
                (&(objectClass=User)(sAMAccountName=9695)(sn=*)(mail=*)(userAccountControl=512));
                sAMAccountName,memberOf;subtree')

Я получаю сообщение об ошибке:

Трассировка ошибок OLE DB [поставщик OLE / DB 'ADSDSOObject' IRowset :: GetData возвратил 0x40eda: состояние данных, возвращаемое поставщиком,: [COLUMN_NAME = memberOf STATUS = DBSTATUS_E_CANTCONVERTVALUE], [COLUMN_NAME = sAMAccountNAT] sATAccountNAT STATEM. Сообщение 7346, уровень 16, состояние 2, строка 2 Не удалось получить данные строки у поставщика OLE DB 'ADSDSOObject'. Не удалось преобразовать значение данных по причинам, отличным от несоответствия или переполнения знака.

1 Ответ

0 голосов
/ 28 апреля 2010

Похоже, что это ограничение, которое нельзя преодолеть напрямую: - TSQL: Как получить список групп, к которым принадлежит пользователь, в Active Directory . OpenQuery не может обрабатывать многозначные атрибуты.

Я закончил писать работу .NET CLR, чтобы справиться с этим.

...