次の方法で共有


SQL 言語

構造化クエリ言語から派生した SQL 言語では、人間が判読できる式を使用してクエリ ステートメントを定義します。 次の ADSI 検索インターフェイスで SQL クエリ ステートメントを使用します。

  • ActiveX データ オブジェクト (ADO) インターフェイス。これは、OLE DB を使用するオートメーション インターフェイスです。
  • OLE DB。これは、データベースにクエリを実行するための C/C++ インターフェイスのセットです。

SQL ステートメントには、次の構文が必要です。

SELECT [ALL] * | select-list FROM 'ADsPath' [WHERE search-condition] [ORDER BY sort-list]

次の表に、SQL クエリ ステートメントのキーワードを示します。

キーワード 形容
選ぶ オブジェクトごとに取得する属性のコンマ区切りのリストを指定します。 *を指定すると、クエリは各オブジェクトの ADsPath のみを取得します。
差出人 検索のベースの ADsPath を指定します。 たとえば、Active Directory ドメイン内の Users コンテナーの ADsPath は、'LDAP://CN=Users,DC=Fabrikam,DC=COM' です。 パスは単一引用符 (') のペアで囲まれている点に注意してください。
どこ クエリ フィルターを指定する省略可能なキーワード。
ORDER BY サーバーが LDAP 並べ替えコントロールをサポートしている場合にサーバー側の並べ替えを生成する省略可能なキーワード。 Active Directory では並べ替えコントロールがサポートされていますが、特に結果セットが大きい場合は、サーバーのパフォーマンスに影響する可能性があります。 並べ替えリストは、並べ替える属性のコンマ区切りのリストです。 Active Directory では 1 つの並べ替えキーのみがサポートされることに注意してください。 オプションの ASC キーワードと DESC キーワードを使用して、昇順または降順の並べ替え順序を指定できます。既定値は昇順です。 ORDER BY キーワードは、ADO Command オブジェクトの "Sort on" プロパティで指定された並べ替えキーをオーバーライドします。

 

手記

MultiByte 文字セットが使用されている場合、SQL 方言で ADO によって検索が実行される場合、バックスラッシュを使用して文字をエスケープすることはできません。 代わりに、特殊文字 に記載されているエスケープ シーケンスを使用する必要があります。 たとえば、バックスラッシュ "\" を使用する構文 "samAccountName=(Test") を使用したステートメントの場合、"(")、代わりに、"samAccountName=\28Test" のように、円記号を特殊文字 "\28" に置き換えます。

 

次のクエリ ステートメントは、ADSI の SQL 言語の例です。

すべてのグループ オブジェクトを検索します。

SELECT ADsPath, cn FROM 'LDAP://DC=Fabrikam,DC=COM' WHERE objectCategory='group'

姓が文字 H で始まるすべてのユーザーを検索します。

SELECT ADsPath, cn FROM 'LDAP://OU=Sales,DC=Fabrikam,DC=COM' WHERE objectCategory='person' AND objectClass='user' AND sn = 'H*' ORDER BY sn

SQL クエリの正式な文法は、次のコード例で定義されています。 すべてのキーワードでは大文字と小文字が区別されません。

statement ::= select-statement
select-statement ::= SELECT [ALL] select-list FROM table-identifier [WHERE search-condition] [ORDER BY sort-list]
select-list ::= * | select-sublist [, select-sublist]... 
select-sublist ::= column-identifier
column-identifier ::= user-defined-name 
table-identifier ::= string-literal
search-condition ::= boolean-term [OR search-condition]
sort-list ::= column-identifier [ASC | DESC] [,column-identifier [ASC | DESC]]... 
boolean-term ::= boolean-factor [AND boolean-term]
boolean-factor ::= [NOT] boolean-primary
boolean-primary ::= comparison-predicate | (search-condition)
comparison-predicate ::= column-identifier comparison-operator literal
comparison-operator ::= < | > | <= | >= | = | <>
user-defined-name ::= letter [letter | digit]...
literal ::= string-literal | numeric-literal | boolean-literal 
string-literal ::= '{character}...' (Any sequence of characters delimited by quotes)
numeric-literal ::= digits [fraction] [exponent]
digits ::= digit [digit]...
fraction ::= . digits 
exponent ::= E digits
boolean-literal ::= TRUE | FALSE | YES | NO | ON | OFF

SQL 内部結合は Active Directory OLE DB プロバイダーではサポートされていませんが、SQL を使用して SQL データと Active Directory データを結合できます。 詳細については、「SQL Server と Active Directory間の異種結合の作成」を参照してください。

検索フィルター構文の

LDAP 方言

IDirectorySearch インターフェイス を使用した検索の

ActiveX データ オブジェクトを使用した検索

OLE DB を使用した検索