2012-03-28 57 views
3

我想用下面的SQL查詢來查詢Active Directory,它完美地工作。從sql server 2008查詢AD描述字段給出錯誤

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

當我添加description屬性我得到以下錯誤:

Msg 7346, Level 16, State 2, Line 6
Cannot get the data of the row from the OLE DB provider "ADSDSOObject" for linked server "ADSI". Could not convert the data value due to reasons other than sign mismatch or overflow.

回答

4

的SQL/ADO查詢功能到Active Directory是非常有限的 - 我會盡量避免,如果以往任何時候都可以使用它們。

這裏的原因是Active Directory中的description屬性是多值的 - 它可能包含多個值(在關係數據庫模型中不可能)。

因此,SQL/ADO查詢提供程序不能從LDAP中讀取任何這些多值屬性 - 沒有辦法或選項或複選框來啓用它 - 這是不可能的。

0

我試圖使用ADsDSOObjectADO時遇到同樣的問題,從AD獲得Description字段。

您必須通過值與For EachDo until ... EOF類型的語句進行交互。

Here is a good example