Диалект SQL

Диалект SQL, производный от язык SQL, использует читаемые человеком выражения для определения инструкций запросов. Используйте инструкцию SQL-запроса со следующими интерфейсами поиска ADSI:

  • Интерфейсы объектов данных ActiveX (ADO), которые являются интерфейсами автоматизации, используюющими OLE DB.
  • OLE DB, который представляет собой набор интерфейсов C/C++ для запросов к базам данных.

Для инструкций SQL требуется следующий синтаксис.

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

В следующей таблице перечислены ключевое слово инструкции SQL-запроса.

Ключевое слово Description
SELECT Задает список атрибутов, разделенных запятыми, для получения каждого объекта. При указании *запрос извлекает только ADsPath каждого объекта.
FROM Указывает ADsPath базы поиска. Например, ADsPath контейнера Users в домене Active Directory может быть "LDAP://CN=Users,DC=Fabrikam,DC=COM". Помните, что путь заключен в пару одинарных кавычки (').
WHERE Необязательный ключевое слово, указывающий фильтр запросов.
ORDER BY Необязательный ключевое слово, который создает серверную сортировку, если сервер поддерживает элемент управления сортировкой LDAP. Active Directory поддерживает элемент управления сортировкой, но может повлиять на производительность сервера, особенно если набор результатов велик. Список сортировки — это разделенный запятыми список атрибутов для сортировки. Помните, что Active Directory поддерживает только один ключ сортировки. Можно использовать необязательные ключевое слово ASC и DESC, чтобы указать порядок сортировки по возрастанию или убыванию; значение по умолчанию возрастает. Order BY ключевое слово переопределяет любой ключ сортировки, указанный свойством Sort on объекта ADO Command.

 

Примечание

В случаях, когда используется набор символов MultiByte, если поиск выполняется ADO с диалектом SQL, обратная косая черта не может использоваться для экранирования символов. Вместо этого необходимо использовать escape-последовательности, перечисленные в специальных символах . Например, для инструкции, которая использовала синтаксис samAccountName=(Test, который использует обратную косую черту, "\", для экранирования открытой скобки", "(", вместо этого вы замените обратную косую черту специальным символом "\28", как показано ниже: "samAccountName=\28Test".

 

Ниже приведены примеры диалекта SQL в ADSI.

Поиск всех объектов группы.

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

Поиск всех пользователей, фамилия которых начинается с буквы H.

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

Формальная грамматика для запросов SQL определена в следующем примере кода. Все ключевое слово не учитывает регистр.

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

Внутренние соединения SQL не поддерживаются поставщиком OLE DB Active Directory, но вы можете использовать SQL для присоединения к данным SQL и Active Directory. Дополнительные сведения см. в статье "Создание разнородного соединения между SQL Server и Active Directory".

Синтаксис фильтра поиска

Диалект LDAP

Поиск с помощью интерфейса IDirectorySearch

Поиск с помощью объектов данных ActiveX

Поиск с помощью OLE DB