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 간에 다른 유형의 조인 만들기를 참조하세요.
관련 항목