Compartilhar via


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 o 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
SELECIONAR Especifica uma lista separada por vírgulas de atributos a serem recuperados para cada objeto. Se você especificar *, a consulta recuperará apenas o ADsPath de cada objeto.
DE 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 um par de aspas simples (').
ONDE 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 der suporte ao controle de classificação LDAP. O Active Directory dá 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 nos quais classificar. Lembre-se de que o Active Directory dá suporte apenas a uma única chave de classificação. Você pode usar as palavras-chave OPcionais ASC e DESC para especificar a ordem de classificação crescente ou decrescente; o padrão é crescente. A palavra-chave ORDER BY substitui qualquer chave de classificação especificada com a propriedade "Sort on" do objeto Comando do ADO.

 

Nota

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 de caracteres. Em vez disso, as sequências de escape listadas em caracteres especiais devem ser usadas. Por exemplo, para uma instrução que usou a sintaxe "samAccountName=(Test", que usa a barra invertida, "\", para escapar dos parênteses abertos, "(", 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 pesquisar todos os objetos de grupo.

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

Para pesquisar 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

Não há suporte para junções internas do SQL pelo provedor OLE DB do Active Directory, mas você pode usar o SQL para ingressar dados do SQL e do Active Directory. Para obter mais informações, consulte Criando uma junção heterogênea entre o SQL Server e o Active Directory.

de Sintaxe de Filtro de Pesquisa

dialeto LDAP

Pesquisa com a interface IDirectorySearch

pesquisa com objetos de dados ActiveX

pesquisa com OLE DB