다음을 통해 공유


SQL 언어

구조적 쿼리 언어에서 파생된 SQL 언어는 사람이 읽을 수 있는 식을 사용하여 쿼리 문을 정의합니다. 다음 ADSI 검색 인터페이스와 함께 SQL 쿼리 문을 사용합니다.

SQL 문에는 다음 구문이 필요합니다.

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

다음 표에서는 SQL 쿼리 문 키워드를 나열합니다.

키워드 묘사
고르다 각 개체에 대해 검색할 특성의 쉼표로 구분된 목록을 지정합니다. *를 지정하면 쿼리는 각 개체의 ADsPath만 검색합니다.
보낸 사람 검색 기준의 ADsPath를 지정합니다. 예를 들어 Active Directory 도메인에 있는 사용자 컨테이너의 ADsPath는 'LDAP://CN=Users,DC=Fabrikam,DC=COM'일 수 있습니다. 경로는 작은따옴표(') 쌍으로 묶입니다.
어디 쿼리 필터를 지정하는 선택적 키워드입니다.
ORDER BY 서버에서 LDAP 정렬 컨트롤을 지원하는 경우 서버 쪽 정렬을 생성하는 선택적 키워드입니다. Active Directory는 정렬 컨트롤을 지원하지만, 특히 결과 집합이 큰 경우 서버 성능에 영향을 미칠 수 있습니다. 정렬 목록은 정렬할 특성의 쉼표로 구분된 목록입니다. Active Directory는 단일 정렬 키만 지원합니다. 선택적 ASC 및 DESC 키워드를 사용하여 오름차순 또는 내림차순 정렬 순서를 지정할 수 있습니다. 기본값은 오름차순입니다. ORDER BY 키워드는 ADO Command 개체의 "Sort on" 속성으로 지정된 정렬 키를 재정의합니다.

 

메모

멀티바이트 문자 집합을 사용하는 경우 ADO에서 SQL 방언으로 검색을 수행하는 경우 백슬래시를 사용하여 문자를 이스케이프할 수 없습니다. 대신 특수 문자 나열된 이스케이프 시퀀스를 사용해야 합니다. 예를 들어 백슬래시 "\"를 사용하는 구문 "samAccountName=(Test")을 사용하여 열린 괄호 "("를 이스케이프하는 문의 경우 백슬래시를 특수 문자 "\28"로 바꿉니다. "samAccountName=\28Test").

 

다음 쿼리 문은 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 사용하여 검색