【问题标题】:Query AD from sql server 2008 Description field gives error从 sql server 2008 查询 AD 描述字段给出错误
【发布时间】:2023-04-21 17:05:01
【问题描述】:

我正在尝试使用以下 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”。 由于符号以外的原因无法转换数据值 不匹配或溢出。

【问题讨论】:

    标签: sql-server-2008 active-directory ldap adsi


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      Here is a good example

      【讨论】:

        最近更新 更多