Consulta Distribuída
Como o ADSI é um Provedor OLE DB, ele pode participar da Consulta Distribuída introduzida no Microsoft SQL Server 7.0. A seguir estão possíveis cenários:
- Ingressar objetos do Active Directory com dados do SQL Server.
- Atualizando dados SQL de objetos do Active Directory.
- Criando 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 dá 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 do Analisador de Consultas SQL
- Primeiro, abra o do Analisador de Consultas SQL no SQL Server vinculado ao serviço de diretório (consulte Criando um servidor vinculado).
- Execute o do Analisador de Consultas SQL (Iniciar | Programas | Microsoft SQL Server 7.0)
- Faça logon no computador do SQL Server.
- Insira a Consulta SQL no painel Editor da janela de consulta.
- Execute a consulta pressionando F5.
As seções a seguir fornecem mais detalhes:
- criar um servidor vinculado
- criando um logon autenticado do SQL Server
- consultando o serviço de diretório
Criando um servidor vinculado
Para configurar uma junçã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 servidor argumento e será o nome desse servidor vinculado.
- "Active Directory Services 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 auto-mapeamento é suficiente para acessar o diretório com a Delegação de Segurança do SQL Server. Como o auto-mapeamento é criado por padrão para servidores vinculados criados por meio de sp_addlinkedserver, nenhum outro mapeamento de logon é necessário.
Para logons autenticados no SQL Server, você pode configurar logons e senhas adequados para se conectar ao serviço de diretório usando o sp_addlinkedsrvlogin Procedimento Armazenado do Sistema.
Nota
Quando possível, use a Autenticação do Windows.
Criando um logon autenticado do SQL Server
Se você preferir usar um logon autenticado do 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 usar é falso.
- "secret**2000" é o rmtpassword, que é a senha associada a 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 manter os resultados da consulta usando a instrução CREATE VIEW. A exibição criada é denominada "viewADContacts".
A primeira instrução SELECT define as informações que estão sendo consultadas do serviço de diretório e mapeia-as para uma coluna na tabela. 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 pelo 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 do qual 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 do modo de exibição a ser exibido.
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