我想获取 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=sAMAccountName STATUS=DBSTATUS_S_OK]]。消息 7346,级别 16,状态 2,第 2 行无法从 OLE DB 提供程序“ADSDSOObject”获取行的数据。由于符号不匹配或溢出以外的原因,无法转换数据值。