Compartilhar via


Consulta Distribuída

Como o ADSI é um provedor OLE DB, ele pode participar da consulta distribuída introduzida no Microsoft SQL Server 7.0. Estes são os cenários possíveis:

  • Unindo objetos do Active Directory com dados do SQL Server.
  • Atualizando dados SQL de objetos do Active Directory.
  • A criação de junções de três ou quatro vias com outros provedores OLE DB. Por exemplo, Index Server, SQL Server e Active Directory.

O provedor OLE DB oferece suporte a dois dialetos de comando, LDAP e SQL, para acessar o serviço de diretório e retornar resultados em um formulário tabular que pode ser consultado com consultas distribuídas do SQL Server.

Para iniciar o SQL Query Analyzer

  1. Primeiro, abra o SQL Query Analyzer no SQL Server vinculado ao serviço de diretório (consulte Criando um servidor vinculado).
  2. Executar o SQL Query Analyzer (Iniciar | Programas | Microsoft SQL Server 7.0)
  3. Faça logon no computador do SQL Server.
  4. Insira a Consulta SQL no painel Editor da janela de consulta.
  5. Execute a consulta pressionando F5.

As seções a seguir fornecem mais detalhes:

Criando um servidor vinculado

Para configurar uma associação distribuída em um serviço de diretório do Windows 2000 Server, crie um servidor vinculado. Para fazer isso, configure o mapeamento ADSI usando o procedimento armazenado do sistema sp_addlinkedserver . Este procedimento vincula um nome a um nome de provedor OLE DB.

No exemplo a seguir, observe que há vários argumentos usados com o procedimento armazenado do sistema sp_addlinkedserver :

  • "ADSI" é o argumento do servidor e será o nome desse servidor vinculado.
  • "Serviços do Active Directory 2.5" é o argumento srvproduct , que é o nome da fonte de dados OLE DB que você está adicionando como um servidor vinculado.
  • "ADSDSOObject" é o argumento provider_name.
  • "adsdatasource" é o argumento data_source , que é o nome da fonte de dados conforme interpretado pelo provedor OLE DB.

O comando EXEC é usado para executar procedimentos armazenados do sistema.

EXEC sp_addlinkedserver 'ADSI', 'Active Directory Services 2.5', 
'ADSDSOObject', 'adsdatasource'
GO

Para logons autenticados pelo Windows, o automapeamento é suficiente para acessar o diretório com a Delegação de Segurança do SQL Server. Como o automapeamento é criado por padrão para servidores vinculados criados por meio do sp_addlinkedserver, nenhum outro mapeamento de logon é necessário.

Para logons autenticados pelo SQL Server, você pode configurar logons e senhas adequados para conexão com o serviço de diretório usando o Procedimento Armazenado do Sistema sp_addlinkedsrvlogin .

Observação

Quando possível, use a Autenticação do Windows.

 

Criando um logon autenticado do SQL Server

Se você preferir usar um logon autenticado pelo SQL Server em vez da Autenticação do Windows, adicione um logon ao servidor vinculado (consulte a seção anterior). Para fazer isso, use o procedimento armazenado do sistema sp_addlinkedsrvlogin .

No exemplo a seguir, há vários argumentos que são usados com o procedimento armazenado do sistema sp_addlinkedsrvlogin :

  • "ADSI" é o argumento rmtsvrname , que é o nome do servidor vinculado criado no exemplo anterior.
  • "Fabrikam\Administrator" é o argumento locallogin, que é o logon no servidor local e pode ser o logon do SQL Server ou um usuário do Windows NT.
  • "CN=Administrator,OU=Sales,DC=activeds,DC=Fabrikam,DC=com" é o argumento rmtuser, que é o nome de usuário que você usa para se conectar porque useself é false.
  • "secret**2000" é o rmtpassword, que é a senha associada ao rmtuser

O comando EXEC é usado para executar procedimentos armazenados do sistema.

EXEC sp_addlinkedsrvlogin 'ADSI', false, 'Fabrikam\Administrator', 
'CN=Administrator,OU=Sales,DC=activeds,DC=Fabrikam,DC=com', 'secret**2000'

Consultando o serviço de diretório

Depois de criar um servidor vinculado, use uma instrução OPENQUERY para enviar uma consulta ao Serviço de Diretório. A consulta SQL a seguir cria uma tabela virtual para armazenar os resultados da consulta usando a instrução CREATE VIEW . O modo de exibição criado é chamado "viewADContacts".

A primeira instrução SELECT define as informações que estão sendo consultadas do serviço de diretório e as mapeia para uma coluna na tabela. As informações cercadas por colchetes indicam os dados que são colocados na tabela virtual. As informações que não estão entre colchetes indicam os dados recuperados do serviço de diretório. Observe que as informações que estão sendo recuperadas do serviço de diretório devem ser referenciadas por seu nome de exibição LDAP.

A próxima instrução é a instrução OPENQUERY . Essa instrução tem dois argumentos: ADSI, que é o nome do servidor vinculado que você criou, e uma instrução de consulta. A instrução de consulta contém os seguintes itens:

  • A instrução SELECT contém a lista de dados que serão obtidos do serviço de diretório. Você precisará usar o nome de exibição LDAP para indicar quais dados você está procurando.
  • A instrução FROM contém o nome do servidor de diretório vinculado de onde essas informações serão obtidas.
  • A instrução WHERE fornece as condições de pesquisa. Neste exemplo, ele está procurando contatos.

A instrução SELECT final é usada para coletar resultados da exibição a ser exibida.

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