다음을 통해 공유


SQL 언어

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

  • OLE DB를 사용하는 Automation 인터페이스인 ADO(ActiveX Data Object) 인터페이스입니다.
  • OLE DB는 데이터베이스 쿼리를 위한 C/C++ 인터페이스 집합입니다.

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

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

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

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

 

참고

MultiByte 문자 집합을 사용하는 경우 ADO에서 SQL 방언으로 검색을 수행하는 경우 백슬래시를 사용하여 문자를 이스케이프할 수 없습니다. 대신 특수 문자 에 나열된 이스케이프 시퀀스를 사용해야 합니다. 예를 들어 백슬래시 "\"를 사용하여 열린 괄호를 이스케이프하는 "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를 사용하여 검색