Распределенный запрос
Так как ADSI является поставщиком OLE DB, он может участвовать в распределенном запросе, представленном в Microsoft SQL Server 7.0. Ниже приведены возможные сценарии.
- Присоединение объектов Active Directory к данным SQL Server.
- Обновление данных SQL из объектов Active Directory.
- Создание трехсторонняя или четырехсторонняя соединения с другими поставщиками OLE DB. Например, Index Server, SQL Server и Active Directory.
Поставщик OLE DB поддерживает два диалекта команд, LDAP и SQL, для доступа к службе каталогов и возврата результатов в табличной форме, которую можно запросить с распределенными запросами SQL Server.
Запуск анализатора запросов SQL
- Сначала откройте анализатора запросов SQL на сервере SQL Server, связанном со службой каталогов (см. статью "Создание связанного сервера").
- Запуск анализатора запросов SQL (запуск | Программы | Microsoft SQL Server 7.0)
- Войдите на компьютер SQL Server.
- Введите SQL-запрос в область редактора окна запроса.
- Выполните запрос, нажав клавишу F5.
Дополнительные сведения см. в следующих разделах:
- создание связанного сервера
- создание для входа с проверкой подлинности SQL Server
- запросы к службе каталогов
Создание связанного сервера
Чтобы настроить распределенное соединение в службе каталогов Сервера Windows 2000, создайте связанный сервер. Для этого настройте сопоставление ADSI с помощью sp_addlinkedserver системной хранимой процедуры. Эта процедура связывает имя с именем поставщика OLE DB.
В следующем примере обратите внимание, что в sp_addlinkedserver системной хранимой процедуре используется несколько аргументов:
- "ADSI" является аргументом сервера и будет именем этого связанного сервера.
- "Службы Active Directory 2.5" — это аргумент srvproduct, который является именем источника данных OLE DB, добавляемого в качестве связанного сервера.
- "ADSDSOObject" является аргументом provider_name.
- "adsdatasource" — это аргумент data_source, который является именем источника данных, интерпретируемым поставщиком OLE DB.
Команда EXEC используется для выполнения системных хранимых процедур.
EXEC sp_addlinkedserver 'ADSI', 'Active Directory Services 2.5',
'ADSDSOObject', 'adsdatasource'
GO
Для имен входа, прошедших проверку подлинности Windows, само сопоставление достаточно для доступа к каталогу с помощью делегирования безопасности SQL Server. Так как самосоединяемое сопоставление создается по умолчанию для связанных серверов, созданных с помощью sp_addlinkedserver, никакое другое сопоставление входа не требуется.
Для входа с проверкой подлинности SQL Server можно настроить подходящие имена входа и пароли для подключения к службе каталогов с помощью sp_addlinkedsrvlogin системной хранимой процедуры.
Заметка
По возможности используйте проверку подлинности Windows.
Создание входа с проверкой подлинности SQL Server
Если вы предпочитаете использовать имя входа, прошедшее проверку подлинности SQL Server, а не проверку подлинности Windows, добавьте имя входа на связанный сервер (см. предыдущий раздел). Для этого используйте системную хранимую процедуру sp_addlinkedsrvlogin.
В следующем примере есть несколько аргументов, которые используются с системной хранимой процедурой sp_addlinkedsrvlogin:
- "ADSI" — это аргумент rmtsvrname, который является именем связанного сервера, созданного в предыдущем примере.
- Fabrikam\Administrator — это аргумент locallogin, который является именем входа на локальном сервере и может быть именем входа SQL Server или пользователем Windows NT.
- "CN=Administrator,OU=Sales,DC=activeds,DC=Fabrikam,DC=com" является аргументом rmtuser, который используется для подключения, так как используетсяfalse.
- "secret**2000" — это rmtpassword, который является паролем, связанным с rmtuser
Команда EXEC используется для выполнения системных хранимых процедур.
EXEC sp_addlinkedsrvlogin 'ADSI', false, 'Fabrikam\Administrator',
'CN=Administrator,OU=Sales,DC=activeds,DC=Fabrikam,DC=com', 'secret**2000'
Запрос службы каталогов
После создания связанного сервера используйте инструкцию OPENQUERY для отправки запроса в службу каталогов. Следующий SQL-запрос создает виртуальную таблицу для хранения результатов запроса с помощью инструкции CREATE VIEW CREATE VIEW. Созданное представление называется viewADContacts.
Первая инструкция SELECT определяет информацию, запрашиваемую из службы каталогов, и сопоставляет ее со столбцом в таблице. Сведения, окруженные скобками, указывают данные, которые помещают в виртуальную таблицу. Сведения, не входящие в квадратные скобки, указывают данные, полученные из службы каталогов. Обратите внимание, что сведения, полученные из службы каталогов, должны ссылаться на отображаемое имя LDAP.
Следующая инструкция — это оператор OPENQUERY. Эта инструкция имеет два аргумента: ADSI, которая является именем созданного связанного сервера и инструкцией запроса. Инструкция запроса содержит следующие элементы:
- Оператор SELECT содержит список данных, которые будут получены из службы каталогов. Отображаемое имя LDAP необходимо использовать, чтобы указать, какие данные вы ищете.
- Оператор FROM содержит имя связанного сервера каталогов, из которого будут получены эти сведения.
- Оператор WHERE предоставляет условия поиска. В этом примере выполняется поиск контактов.
Последний оператор SELECT используется для получения результатов из представления для отображения.
CREATE VIEW viewADContacts
AS
SELECT [Name], sn [Last Name], street [Street], l [City], st [State]
FROM OPENQUERY( ADSI,
'SELECT name, sn, street, l, st
FROM 'LDAP:// OU=Sales,DC=activeds,DC=Fabrikam,DC=Com'
WHERE objectCategory='Person' AND
objectClass = 'contact'')
GO
SELECT * FROM viewADContacts