다음을 통해 공유


LDAP 언어

LDAP 언어는 LDAP 검색 필터 구문을 사용하는 쿼리 문의 형식입니다. 다음 ADSI 검색 인터페이스와 함께 LDAP 쿼리 문을 사용합니다.

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

LDAP 언어 문자열은 세미콜론(;))으로 구분된 네 부분으로 구성됩니다.

  • 기본 고유 이름입니다. 예:

    <LDAP://DC=Fabrikam,DC=COM>
    
  • LDAP 검색 필터. 검색 필터에 대한 자세한 내용은 검색 필터 구문을 참조하세요.

  • 검색할 특성의 LDAP 표시 이름입니다. 여러 특성은 쉼표로 구분됩니다.

  • 검색의 scope 지정합니다. 유효한 값은 "base", "onelevel" 및 "subtree"입니다. LDAP 쿼리 문자열에 지정된 scope ADO Command 개체의 "SearchScope" 속성으로 지정된 검색 scope 재정의합니다.

다음은 하위 트리의 모든 개체를 검색하는 ADSI의 LDAP 방언 코드 예제입니다.

"<LDAP://DC=Fabrikam,DC=com>;(objectClass=*);AdsPath, cn;subTree"

모든 검색 옵션(예: 검색 페이지 크기)을 LDAP 언어로 표현할 수 있는 것은 아니므로 실제 쿼리 실행이 시작되기 전에 옵션을 설정해야 합니다.

LDAP 쿼리를 수행하기 위한 예제 코드

다음 코드 예제에서는 LDAP 쿼리를 사용하는 방법을 보여줍니다.

Dim con As New Connection, rs As New Recordset
Dim adVariant
Dim i 'Used for counter
Dim j 'Used for counter
Dim Com As New Command
Dim strDomain As String
Dim strPassword As String
 
' Open a Connection object.
con.Provider = "ADsDSOObject"
con.Properties("ADSI Flag") = 1
con.Properties("User ID") = strDomain + "\" + strUserID
con.Properties("Password") = strPassword

con.Open "Active Directory Provider"
 
' Create a command object on this connection.
Set Com.ActiveConnection = con
 
' Set the query string.
Com.CommandText = "<LDAP://MyServer/DC=MyDomain,DC=Fabrikam,DC=com>;
     (objectClass=*);ADsPath, objectclass;base"
 
' Set search preferences.
Com.Properties("Page Size") = 1000
Com.Properties("Timeout") = 30 'seconds
 
' Execute the query.
Set rs = Com.Execute
 
' Navigate the record set.
rs.MoveFirst
While Not rs.EOF
    For i = 0 To rs.Fields.Count - 1
        If rs.Fields(i).Type = adVariant And Not (IsNull(rs.Fields(i).Value)) Then
            Debug.Print rs.Fields(i).Name, " = "
            For j = LBound(rs.Fields(i).Value) To UBound(rs.Fields(i).Value)
                Debug.Print rs.Fields(i).Value(j), " # "
            Next j
        Else
            Debug.Print rs.Fields(i).Name, " = ", rs.Fields(i).Value
        End If
    Next i
    rs.MoveNext
Wend
 
rs.MoveLast
Debug.Print "No. of rows = ", rs.RecordCount

쿼리 구문에 대한 자세한 내용은 검색 필터 구문을 참조하세요.

검색 필터 구문

SQL 방언

IDirectorySearch 인터페이스를 사용하여 검색

ActiveX 데이터 개체를 사용하여 검색

OLE DB를 사용하여 검색