none
Вопрос про LDAP запрос RRS feed

  • Вопрос

  • Есть ли возможность указать в LDAP запросе возвращать только одно значение multivalue атрибута?

    Или есть более другой способ получить требуемый результат?

    Использую linked Server в MSSQL и запрос такой:

    CREATE VIEW dbo.[LDAP-test-2]
    AS
    SELECT     description
    FROM         OPENQUERY(CORP,
                          '<LDAP://DC=corp,DC=ru>;
       (distinguishedname=CN=Вася,OU=users,DC=corp,DC=ru);description;subtree')
                           LDAP

     

    description (почему-то) multivalue. И такой запрос через SQL не работает... А очень хотелось бы получить название, описание и (еще пару атрибутов) именно через SQL (в качестве источкина данных для GridView в ASP .NET)

    15 февраля 2007 г. 8:00

Ответы

  • Все дело в том, что атрибут description имеет долгую и бурную историю. И когда-то в доисторические времена (NT4) существовали программные интерфейсы SAM, позволяющие прочитать или изменить этот атрибут для групп или пользователей. Причем тогда он мог содержать только одно значение.

    Потом на свет появилась Active Directory, и кто-то очень умный решил, что description надо сделать многозначным. Так и порешили. Но поскольку старые SAM API поддерживать по-прежнему необходимо, в коде Active Directory добавили специальную обработку атрибута description на объектах, с которым работает SAM (user, group), которая не дает добавить более одного значения.  По-хорошему, конечно, надо было оставить старый атрибут в покое и просто добавить новый, но почему этого не сделали - я не знаю. Однако я верю, что и на это были веские причины. :)

    Владимир.

    20 февраля 2007 г. 0:20

Все ответы

  • Подскажите хоть что-нибудь полезное???

    В доке на SQLЖ

    OPENQUERY

    Executes the specified pass-through query on the given linked server, which is an OLE DB data source. The OPENQUERY function can be referenced in the FROM clause of a query as though it is a table name. The OPENQUERY function can also be referenced as the target table of an INSERT, UPDATE, or DELETE statement, subject to the capabilities of the OLE DB provider. Although the query may return multiple result sets, OPENQUERY returns only the first one.

    Возвращает только один, первый результат... почему не так???

    16 февраля 2007 г. 10:59
  • Да, и еще...

    Может кто-нибудь из специалистов MS сможет объяснить почему description сделан как Multi valued

    НО ПРИ ЭТОМ! при попытке задать второе значение через ADSI Edit оно мне говорит:

    "Multiple values were specified for an attribute that can have only one value"

     

    ???

    Какая была причина, делать его Multi???  Не туда тыкнули при создании схемы? Или есть реальная причина?

    16 февраля 2007 г. 12:12
  • Все дело в том, что атрибут description имеет долгую и бурную историю. И когда-то в доисторические времена (NT4) существовали программные интерфейсы SAM, позволяющие прочитать или изменить этот атрибут для групп или пользователей. Причем тогда он мог содержать только одно значение.

    Потом на свет появилась Active Directory, и кто-то очень умный решил, что description надо сделать многозначным. Так и порешили. Но поскольку старые SAM API поддерживать по-прежнему необходимо, в коде Active Directory добавили специальную обработку атрибута description на объектах, с которым работает SAM (user, group), которая не дает добавить более одного значения.  По-хорошему, конечно, надо было оставить старый атрибут в покое и просто добавить новый, но почему этого не сделали - я не знаю. Однако я верю, что и на это были веские причины. :)

    Владимир.

    20 февраля 2007 г. 0:20
  •  Vladimir Grebenik - MSFT написано:

    , и кто-то очень умный решил,

    Умному человеку спасибо!

    Я, в качестве варианта решения проблемы c SQL запросом, решил создать свой атрибут. Аналог Description, но Single. И, периодически, делать myDescription = description[0]. (Всё равно есть скриптик, который периодически сравнивает базу AD и Human resources, добавить туда эту функцию - мелочи).

    Думаю - это самое простое и удобное решение?

    20 февраля 2007 г. 3:29