1

Active Directoryユーザーのリストと、SQLServer2005リンクサーバーを使用しているメンバーであるセキュリティグループを取得したいと思います。レコードを取得するためのクエリが機能していますが、memberOf属性(複数値のLDAP属性)にアクセスする方法がわかりません。

私は情報を保存するためにこれを一時的に持っています:

DROP TABLE #ADUSERGROUPS
CREATE TABLE #ADUSERGROUPS 
(
sAMAccountName varchar(30),
UserGroup varchar(50)
)

各グループ/ユーザーの関連付けは1行である必要があります。

これは私のSELECTステートメントです:

SELECT sAMAccountName,memberOf
FROM OpenQuery(ADSI, '<LDAP://hqdc04/DC=nt,DC=avs>;
                (&(objectClass=User)(sAMAccountName=9695)(sn=*)(mail=*)(userAccountControl=512));
                sAMAccountName,memberOf;subtree')

このエラーメッセージが表示されます:

OLEDBエラートレース[OLE/DBプロバイダー'ADSDSOObject'IRowset :: GetDataが0x40edaを返しました:プロバイダーから返されたデータステータス:[COLUMN_NAME = memberOf STATUS = DBSTATUS_E_CANTCONVERTVALUE]、[COLUMN_NAME = sAMAccountName STATUS=DBSTATUS_S_OK]]。メッセージ7346、レベル16、状態2、行2OLEDBプロバイダー'ADSDSOObject'から行のデータを取得できませんでした。符号の不一致またはオーバーフロー以外の理由により、データ値を変換できませんでした。

4

1 に答える 1

0

これは直接克服できない制限のようです。--TSQL:ActiveDirectoryでユーザーが属するグループのリストを取得する方法。OpenQueryは複数値の属性を処理できません。

これを処理するために.NETCLRジョブを作成することになりました。

于 2010-04-28T13:14:02.643 に答える