3

次のSQLクエリを使用してActiveDirectoryにクエリを実行しようとしていますが、これは完全に機能します。

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」のOLEDBプロバイダー「ADSDSOObject」から行のデータを取得できません。符号の不一致またはオーバーフロー以外の理由により、データ値を変換できませんでした。

4

2 に答える 2

4

ActiveDirectoryへのSQL/ADOクエリ機能は非常に制限されています。可能な限り、それらを使用しないようにします。

ここでの理由はdescription、Active Directoryの属性が複数の値であるためです。つまり、複数の値が含まれる可能性があります(リレーショナルデータベースモデルでは不可能なことです)。

したがって、SQL / ADOクエリプロバイダーは、LDAPからこれらの複数値属性を読み取ることができません。これを有効にする方法、オプション、またはチェックボックスはありません。それは不可能です。

于 2012-03-28T20:06:50.587 に答える
0

Descriptionと を使用しようとしているときに、AD からフィールドを取得するのと同じ問題がADsDSOObjectありADOます。

For EachまたはDo until ... EOFタイプのステートメントで値を相互処理する必要があります。

ここに良い例があります

于 2012-03-29T12:49:44.527 に答える