Zapytanie rozproszone
Ponieważ ADSI jest dostawcą OLE DB, może uczestniczyć w zapytaniu rozproszonym wprowadzonym w programie Microsoft SQL Server 7.0. Poniżej przedstawiono możliwe scenariusze:
- Łączenie obiektów usługi Active Directory z danymi programu SQL Server.
- Aktualizowanie danych SQL z obiektów usługi Active Directory.
- Tworzenie trójkierunkowych lub czterokierunkowych sprzężeń z innymi dostawcami OLE DB. Na przykład serwer indeksów, program SQL Server i usługa Active Directory.
Dostawca OLE DB obsługuje dwa dialekty poleceń, LDAP i SQL, aby uzyskać dostęp do usługi katalogowej i zwrócić wyniki w formie tabelarycznej, którą można wykonywać zapytania za pomocą zapytań rozproszonych programu SQL Server.
Aby uruchomić analizator zapytań SQL
- Najpierw otwórz analizatora zapytań SQL w programie SQL Server połączonym z usługą katalogową (zobacz Tworzenie połączonego serwera).
- Uruchamianie analizatora zapytań SQL (Uruchom | Programy | Microsoft SQL Server 7.0)
- Zaloguj się na komputerze z programem SQL Server.
- Wprowadź zapytanie SQL w okienku Edytor okna zapytania.
- Wykonaj zapytanie, naciskając F5.
W poniższych sekcjach opisano więcej szczegółów:
- Tworzenie połączonego serwera
- tworzenie uwierzytelnionego logowania programu SQL Server
- wykonywanie zapytań dotyczących usługi katalogowej
Tworzenie serwera połączonego
Aby skonfigurować sprzężenie rozproszone w usłudze katalogowej systemu Windows 2000 Server, utwórz połączony serwer. W tym celu skonfiguruj mapowanie ADSI przy użyciu procedury składowanej systemu sp_addlinkedserver. Ta procedura łączy nazwę z nazwą dostawcy OLE DB.
W poniższym przykładzie należy pamiętać, że istnieje kilka argumentów używanych z procedurą składowaną systemu sp_addlinkedserver:
- "ADSI" to serwer argument i będzie nazwą tego serwera połączonego.
- "Usługi Active Directory 2.5" to srvproduct argument, który jest nazwą źródła danych OLE DB dodawanego jako serwer połączony.
- "ADSDSOObject" jest argumentem provider_name.
- "adsdatasource" to argument data_source, który jest nazwą źródła danych interpretowaną przez dostawcę OLE DB.
Polecenie EXEC służy do wykonywania systemowych procedur składowanych.
EXEC sp_addlinkedserver 'ADSI', 'Active Directory Services 2.5',
'ADSDSOObject', 'adsdatasource'
GO
W przypadku logowań uwierzytelnionych w systemie Windows samomapowanie wystarczy, aby uzyskać dostęp do katalogu za pomocą delegowania zabezpieczeń programu SQL Server. Ponieważ samomapowanie jest tworzone domyślnie dla serwerów połączonych utworzonych za pośrednictwem sp_addlinkedserver, nie jest konieczne żadne inne mapowanie logowania.
W przypadku logowań uwierzytelnionych w programie SQL Server można skonfigurować odpowiednie identyfikatory logowania i hasła do nawiązywania połączenia z usługą katalogową przy użyciu procedury składowanej systemu sp_addlinkedsrvlogin.
Nuta
Jeśli to możliwe, użyj uwierzytelniania systemu Windows.
Tworzenie uwierzytelnionego logowania programu SQL Server
Jeśli wolisz użyć logowania uwierzytelnionego przez program SQL Server, a nie uwierzytelniania systemu Windows, dodaj identyfikator logowania do serwera połączonego (zobacz poprzednią sekcję). W tym celu należy użyć procedury składowanej systemu sp_addlinkedsrvlogin.
W poniższym przykładzie istnieje kilka argumentów używanych z procedurą składowaną systemu sp_addlinkedsrvlogin:
- "ADSI" to rmtsvrname argument, który jest nazwą serwera połączonego utworzonego w poprzednim przykładzie.
- "Fabrikam\Administrator" jest locallogin argument, który jest identyfikatorem logowania na serwerze lokalnym i może być identyfikatorem logowania programu SQL Server lub użytkownikiem systemu Windows NT.
- "CN=Administrator,OU=Sales,DC=activeds,DC=Fabrikam,DC=com" jest argumentem rmtuser, który jest nazwą użytkownika używaną do nawiązania połączenia, ponieważ używać się jest false.
- "secret**2000" to rmtpassword, czyli hasło skojarzone z rmtuser
Polecenie EXEC służy do wykonywania systemowych procedur składowanych.
EXEC sp_addlinkedsrvlogin 'ADSI', false, 'Fabrikam\Administrator',
'CN=Administrator,OU=Sales,DC=activeds,DC=Fabrikam,DC=com', 'secret**2000'
Wykonywanie zapytań dotyczących usługi katalogowej
Po utworzeniu serwera połączonego użyj instrukcji OPENQUERY, aby wysłać zapytanie do usługi katalogowej. Poniższe zapytanie SQL tworzy tabelę wirtualną do przechowywania wyników zapytania przy użyciu instrukcji CREATE VIEW. Utworzony widok nosi nazwę "viewADContacts".
Pierwsza instrukcja SELECT definiuje informacje, które są odpytywane z usługi katalogowej i mapuje je na kolumnę w tabeli. Informacje otoczone nawiasami kwadratowymi wskazują dane umieszczone w tabeli wirtualnej. Informacje, które nie są w nawiasach kwadratowych, wskazują dane pobierane z usługi katalogowej. Zwróć uwagę, że informacje pobierane z usługi katalogowej muszą być przywoływane przez jego nazwę wyświetlaną LDAP.
Następną instrukcją jest instrukcja OPENQUERY. Ta instrukcja ma dwa argumenty: ADSI, czyli nazwę utworzonego serwera połączonego i instrukcję zapytania. Instrukcja query zawiera następujące elementy:
- Instrukcja SELECT zawiera listę danych, które zostaną uzyskane z usługi katalogowej. Musisz użyć nazwy wyświetlanej LDAP, aby wskazać, które dane są wyszukiwane.
- Instrukcja FROM zawiera nazwę połączonego serwera katalogów, z którego te informacje zostaną uzyskane.
- Instrukcja WHERE zawiera warunki wyszukiwania. W tym przykładzie wyszukuje kontakty.
Ostatnia instrukcja SELECT służy do odbierania wyników z widoku do wyświetlenia.
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