Поделиться через


Распределенный запрос

Так как 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

  1. Сначала откройте анализатора запросов SQL на сервере SQL Server, связанном со службой каталогов (см. статью "Создание связанного сервера").
  2. Запуск анализатора запросов SQL (запуск | Программы | Microsoft SQL Server 7.0)
  3. Войдите на компьютер SQL Server.
  4. Введите SQL-запрос в область редактора окна запроса.
  5. Выполните запрос, нажав клавишу F5.

Дополнительные сведения см. в следующих разделах:

Создание связанного сервера

Чтобы настроить распределенное соединение в службе каталогов Сервера 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