Dialecto SQL
El dialecto SQL, derivado del Lenguaje de consulta estructurado, usa expresiones legibles para definir instrucciones de consulta. Use una instrucción de consulta SQL con las siguientes interfaces de búsqueda ADSI:
- Las interfaces del objeto de datos ActiveX (ADO), que son interfaces de automatización que usan OLE DB.
- OLE DB, que es un conjunto de interfaces de C/C++ para consultar bases de datos.
Las instrucciones SQL requieren la sintaxis siguiente.
SELECT [ALL] * | select-list FROM 'ADsPath' [WHERE search-condition] [ORDER BY sort-list]
En la tabla siguiente se enumeran las palabras clave de la instrucción de consulta SQL.
Palabra clave | Descripción |
---|---|
SELECT | Especifica una lista separada por comas de atributos que se van a recuperar para cada objeto. Si especifica *, la consulta recupera solo el ADsPath de cada objeto. |
FROM | Especifica el ADsPath de la base de la búsqueda. Por ejemplo, el ADsPath del contenedor Users de un dominio de Active Directory podría ser "LDAP://CN=Users,DC=Fabrikam,DC=COM". Tenga en cuenta que la ruta de acceso está entre comillas simples ('). |
WHERE | Palabra clave opcional que especifica el filtro de consulta. |
ORDER BY | Palabra clave opcional que genera una ordenación del lado servidor si el servidor admite el control de ordenación LDAP. Active Directory admite el control de ordenación, pero puede afectar al rendimiento del servidor, especialmente si el conjunto de resultados es grande. La lista de ordenación es una lista separada por comas de atributos en los que se va a ordenar. Tenga en cuenta que Active Directory solo admite una clave de ordenación única. Puede usar las palabras clave ASC y DESC opcionales para especificar el criterio de ordenación ascendente o descendente; el valor predeterminado es ascendente. La palabra clave ORDER BY invalida cualquier clave de ordenación especificada con la propiedad "Ordenar por" del objeto Command de ADO. |
Nota
En los casos en los que se usa un juego de caracteres multibyte, si ADO realiza la búsqueda con el dialecto SQL, no se puede usar una barra diagonal inversa para escapar caracteres. En su lugar, se deben usar las secuencias de escape enumeradas en Caracteres especiales . Por ejemplo, para una instrucción que usó la sintaxis "samAccountName=(Test", que usa la barra diagonal inversa, "\", para escapar el paréntesis abierto, "(", en su lugar, reemplazaría la barra diagonal inversa por el carácter especial "\28", como se indica a continuación: "samAccountName=\28Test".
Las siguientes instrucciones de consulta son ejemplos de dialecto SQL en ADSI.
Para buscar todos los objetos de grupo.
SELECT ADsPath, cn FROM 'LDAP://DC=Fabrikam,DC=COM' WHERE objectCategory='group'
Para buscar todos los usuarios cuyo apellido comienza por la 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
La gramática formal para las consultas SQL se define en el ejemplo de código siguiente. Todas las palabras clave no distinguen mayú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
El proveedor OLE DB de Active Directory no admite las combinaciones internas de SQL, pero puede usar SQL para unir datos sql y Active Directory. Para obtener más información, consulte Creación de una combinación heterogénea entre SQL Server y Active Directory.
Temas relacionados