3

我正在尝试使用以下 SQL 查询来查询 Active Directory,它运行良好。

SELECT * FROM OpenQuery(ADSI, 
                         'SELECT title, displayName, sAMAccountName, givenName, 
                                 telephoneNumber, facsimileTelephoneNumber, sn,  
                                 mail, physicalDeliveryOfficeName
                          FROM ''LDAP://DC=mydomain,DC=org'' 
                          WHERE sAMAccountName = ''myUser''')

当我添加description属性时,出现以下错误:

消息 7346,级别 16,状态 2,第 6
行无法从链接服务器“ADSI”的 OLE DB 提供程序“ADSDSOObject”获取行的数据。由于符号不匹配或溢出以外的原因,无法转换数据值。

4

2 回答 2

4

Active Directory 中的 SQL/ADO 查询功能非常有限——如果可能的话,我会尽量避免使用它们。

这里的原因是descriptionActive Directory 中的属性是多值的——它可能包含多个值(这在关系数据库模型中是不可能的)。

因此,SQL/ADO 查询提供程序无法从 LDAP 读取任何这些多值属性——没有办法或选项或复选框来启用它——这是不可能的。

于 2012-03-28T20:06:50.587 回答
0

Description在尝试使用ADsDSOObjectand时从 AD 获取字段时遇到了同样的问题ADO

For Each您必须使用orDo until ... EOF类型的语句对值进行交互。

这是一个很好的例子

于 2012-03-29T12:49:44.527 回答