Dialeto SQL
O dialeto SQL, derivado da Linguagem de Consulta Estruturada, usa expressões legíveis por humanos para definir instruções de consulta. Use uma instrução de consulta SQL com as seguintes interfaces de pesquisa ADSI:
- As interfaces ActiveX Data Object (ADO), que são interfaces de automação que usam OLE DB.
- OLE DB, que é um conjunto de interfaces C/C++ para consultar bancos de dados.
As instruções SQL exigem a sintaxe a seguir.
SELECT [ALL] * | select-list FROM 'ADsPath' [WHERE search-condition] [ORDER BY sort-list]
A tabela a seguir lista as palavras-chave da instrução de consulta SQL.
Palavra-chave | Descrição |
---|---|
SELECT | Especifica uma lista separada por vírgulas de atributos a serem recuperados para cada objeto. Se você especificar *, a consulta recuperará somente o ADsPath de cada objeto. |
FROM | Especifica o ADsPath da base da pesquisa. Por exemplo, o ADsPath do contêiner Usuários em um domínio do Active Directory pode ser 'LDAP://CN=Users,DC=Fabrikam,DC=COM'. Lembre-se de que o caminho está entre aspas simples ('). |
WHERE | Uma palavra-chave opcional que especifica o filtro de consulta. |
ORDER BY | Uma palavra-chave opcional que gera uma classificação do lado do servidor se o servidor oferecer suporte ao controle de classificação LDAP. O Active Directory oferece suporte ao controle de classificação, mas pode afetar o desempenho do servidor, especialmente se o conjunto de resultados for grande. A lista de classificação é uma lista separada por vírgulas de atributos na qual classificar. Lembre-se de que o Active Directory oferece suporte a apenas uma única chave de classificação. Você pode usar as palavras-chave ASC e DESC opcionais para especificar ordem de classificação crescente ou decrescente; O padrão é ascendente. A palavra-chave ORDER BY substitui qualquer chave de classificação especificada com a propriedade "Sort on" do objeto Command do ADO. |
Observação
Nos casos em que um conjunto de caracteres MultiByte está sendo usado, se a pesquisa for executada pelo ADO com o dialeto SQL, uma barra invertida não poderá ser usada para escapar dos caracteres. Em vez disso, as sequências de escape listadas em Caracteres especiais devem ser usadas. Por exemplo, para uma instrução que usava a sintaxe "samAccountName=(Test", que usa a barra invertida, "\", para escapar do parêntese aberto, "(", em vez disso, você substituiria a barra invertida pelo caractere especial "\28", da seguinte maneira: "samAccountName=\28Test".
As instruções de consulta a seguir são exemplos de dialeto SQL no ADSI.
Para procurar todos os objetos de grupo.
SELECT ADsPath, cn FROM 'LDAP://DC=Fabrikam,DC=COM' WHERE objectCategory='group'
Para procurar todos os usuários cujo sobrenome começa com a letra H.
SELECT ADsPath, cn FROM 'LDAP://OU=Sales,DC=Fabrikam,DC=COM' WHERE objectCategory='person' AND objectClass='user' AND sn = 'H*' ORDER BY sn
A gramática formal para consultas SQL é definida no exemplo de código a seguir. Todas as palavras-chave não diferenciam maiúsculas de minúsculas.
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
As junções internas do SQL não são suportadas pelo provedor OLE DB do Active Directory, mas você pode usar o SQL para unir dados SQL e do Active Directory. Para obter mais informações, consulte Criando uma associação heterogênea entre o SQL Server e o Active Directory.