SQL-Dialekt

Der SQL-Dialekt, der vom strukturierte Abfragesprache abgeleitet wird, verwendet lesbare Ausdrücke, um Abfrageanweisungen zu definieren. Verwenden Sie eine SQL-Abfrageanweisung mit den folgenden ADSI-Suchschnittstellen:

SQL-Anweisungen erfordern die folgende Syntax.

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

In der folgenden Tabelle sind Schlüsselwörter für SQL-Abfrageanweisungen aufgeführt.

Schlüsselwort BESCHREIBUNG
SELECT Gibt eine durch Trennzeichen getrennte Liste von Attributen an, die für jedes Objekt abgerufen werden sollen. Wenn Sie *angeben, ruft die Abfrage nur den ADsPath jedes Objekts ab.
FROM Gibt den ADsPath der Basis der Suche an. Beispielsweise kann der ADsPath des Containers Users in einer Active Directory-Domäne "LDAP://CN=Users,DC=Fabrikam,DC=COM" sein. Beachten Sie, dass der Pfad in ein Paar einfache Anführungszeichen (') eingeschlossen ist.
WHERE Eine optionale Schlüsselwort (keyword), die den Abfragefilter angibt.
ORDER BY Ein optionaler Schlüsselwort (keyword), der eine serverseitige Sortierung generiert, wenn der Server das LDAP-Sortiersteuerelement unterstützt. Active Directory unterstützt die Sortiersteuerung, kann sich jedoch auf die Serverleistung auswirken, insbesondere wenn der Ergebnissatz groß ist. Die Sortierliste ist eine durch Trennzeichen getrennte Liste von Attributen, nach denen sortiert werden soll. Beachten Sie, dass Active Directory nur einen einzelnen Sortierschlüssel unterstützt. Sie können die optionalen ASC- und DESC-Schlüsselwörter verwenden, um aufsteigende oder absteigende Sortierreihenfolge anzugeben. der Standardwert ist aufsteigend. Der ORDER BY-Schlüsselwort (keyword) überschreibt jeden Sortierschlüssel, der mit der "Sort on"-Eigenschaft des ADO Command-Objekts angegeben ist.

 

Hinweis

In Fällen, in denen ein Multibyte-Zeichensatz verwendet wird und die Suche von ADO mit dem SQL-Dialekt ausgeführt wird, kann ein umgekehrter Schrägstrich nicht zum Escapen von Zeichen verwendet werden. Stattdessen müssen die unter Sonderzeichen aufgeführten Escapesequenzen verwendet werden. Für eine Anweisung, die die Syntax "samAccountName=(Test" verwendet, die den umgekehrten Schrägstrich "\" verwendet, um die geöffnete Klammer mit Escapezeichen zu versehen, "(", ersetzen Sie stattdessen den umgekehrten Schrägstrich durch das Sonderzeichen "\28", wie folgt: "samAccountName=\28Test".

 

Die folgenden Abfrageanweisungen sind Beispiele für SQL-Dialekt in ADSI.

So suchen Sie nach allen Gruppenobjekten.

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

So suchen Sie nach allen Benutzern, deren Nachname mit dem Buchstaben H beginnt.

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

Die formale Grammatik für SQL-Abfragen wird im folgenden Codebeispiel definiert. Bei allen Schlüsselwörtern wird die Groß-/Kleinschreibung nicht beachtet.

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

Innere SQL-Joins werden vom Active Directory OLE DB-Anbieter nicht unterstützt, aber Sie können SQL zum Einbinden von SQL- und Active Directory-Daten verwenden. Weitere Informationen finden Sie unter Erstellen einer heterogenen Verknüpfung zwischen SQL Server und Active Directory.

Suchfiltersyntax

LDAP-Dialekt

Suchen mit der IDirectorySearch-Schnittstelle

Suchen mit ActiveX-Datenobjekten

Suchen mit OLE DB