2011-12-06 10 views
3

SQL ServerからLDAP上でオープンクエリを実行するためにSQL文を設定する際に問題があります。私はここに記載されている指示に従った:Querying Active Directory from SQL Server 2005しかし、私は一緒に最終的な部分を置くいくつかの問題を抱えている。SQL ServerからLDAPを照会する問題

まず、LDAPサーバーの場所がわかりませんでした。だから私はnslookupをしたとして、デフォルトのサーバーを見つけました:私は設定さ

abc.domain.popo.local 

OPENQUERYしかし

SELECT * FROM OPENQUERY(ADSI, 'SELECT * FROM ''LDAP://DC=abc,DC=domain,DC=popo,DC=local'' WHERE 
objectCategory = ''User''') 

として、私は準備中

エラーが発生したというエラーを取得しますリンクサーバー "ADSI"のOLE DBプロバイダ "ADSDSOObject"に対して実行するクエリ "SELECT * FROM 'LDAP:// DC = abc、DC =ドメイン、DC = popo、DC = local' WHERE objectCategory = 'User'"

ここにはどのような問題がありますか?私はDCを間違って設定していますか(なぜ私はDCが何を意味するのかわからないからです)?それとも、LDAPのサーバーが間違っている可能性が高いですか?

答えて

5

Windows Active Directory(機能的にはLDAPとして表示されます)に対してクエリを実行しようとしているようです。デフォルトでは、ADは匿名のクエリを許可しません。信頼できるユーザー名とパスワードで認証する必要があります。また、適切な基本値( "DC = abc、DC = domain、DC = popo、DC = local")を持っていることを確認するには、sysadminに確認する必要があります。

+0

私は、クエリを実行するために、Windows認証を使用している場合でも、ユーザー名/パスワードを指定する必要がありますか? – Rondel

+0

私は確信していませんが、あなたの資格が完全に渡されたら驚くでしょう。明示的にクレデンシャルを設定することは、少なくとも試してみることです。 –

+0

これかもしれません。私は、リンクサーバーのセキュリティがこれまでに設定されたとは思わない。リンクサーバーのプロパティを確認するために管理者を取得する必要があります – Rondel

1

リチャードミューラーのADO/SQL search tipsを参照してください - それは役に立ちますか? (リチャードさんのサイトには、LDAPとActive Directoryの参照とヒントの真の宝庫である! - 強くお勧めします)

私はこのサイト上で見てきたものから、あなたは間違っobjectCategoryを持つかもしれない - Person代わりのUserを(使用してみてくださいこれは私が)objectClassであると考えている:

SELECT * FROM OPENQUERY(ADSI, 
      'SELECT * FROM ''LDAP://DC=abc,DC=domain,DC=popo,DC=local'' 
      WHERE objectCategory = ''Person''') 
+0

リンクをありがとう。それはいくつかの良い情報を持っていますが、私の現在の問題を解決しません。また、objectCategoryではなくobjectClassで失敗しました – Rondel

+0

@Rondel:何を選択しようとしていますか?多分、異なる出発点から選択する必要があります。 "SELECT * FROM" LDAP:// CN =ユーザー、DC =ドメイン、DC = popo、DC =ローカル '' WHERE objectCategory = ''ユーザー '' ''またはそのようなもの.... –

+0

今すぐ私はADからユーザのために何か情報を得ることを試みていますが、最終的にはdisplayNamesとusernamesだけが必要です。 – Rondel

1

「ABC」は、そのドメイン内のドメインコントローラの実際の名前ではないことを確認してください。したがって、その場合には、あなたのOPENQUERYはそれを省略し、次のようになります。

SELECT * FROM OPENQUERY(ADSI, 'SELECT * FROM ''LDAP://DC=domain,DC=popo,DC=local'' WHERE objectCategory = ''Person'' AND objectClass = ''user''')

+0

お役立ち情報だから私はサーバーabc.domain.popo.local、def.domain.popo.localなどの束を持っている場合、私はちょうど使用する必要があります** DC =ドメイン、DC =ポップ、DC =ローカル** – Rondel

+0

@Rondel - はいベストプラクティスとして「サーバーレスバインド」を使用する必要があります。それ以外の場合は、特定のドメインコントローラを対象とします。サーバーがダウンするとクエリが失敗します –

関連する問題