Я хотел бы получить список пользователей 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'. Не удалось преобразовать значение данных по причинам, отличным от несоответствия или переполнения знака.