Freigeben über


Verteilte Abfrage

Da ADSI ein OLE DB-Anbieter ist, kann sie an der verteilten Abfrage teilnehmen, die in Microsoft SQL Server 7.0 eingeführt wurde. Die folgenden Szenarien sind möglich:

  • Verknüpfen von Active Directory-Objekten mit SQL Server-Daten.
  • Aktualisieren von SQL-Daten aus Active Directory-Objekten.
  • Erstellen von drei- oder vierseitigen Verknüpfungen mit anderen OLE DB-Anbietern. Beispiel: Index Server, SQL Server und Active Directory.

Der OLE DB-Anbieter unterstützt zwei Befehlsdialekte, LDAP und SQL, um auf den Verzeichnisdienst zuzugreifen und Ergebnisse in tabellarischer Form zurückzugeben, die mit verteilten SQL Server-Abfragen abgefragt werden können.

So starten Sie die SQL Query Analyzer-

  1. Öffnen Sie zunächst die SQL Query Analyzer auf dem SQL Server, der mit dem Verzeichnisdienst verknüpft ist (siehe Erstellen eines verknüpften Servers).
  2. Ausführen der SQL Query Analyzer (Start | Programme | Microsoft SQL Server 7.0)
  3. Melden Sie sich beim SQL Server-Computer an.
  4. Geben Sie die SQL-Abfrage in den Editorbereich des Abfragefensters ein.
  5. Führen Sie die Abfrage aus, indem Sie F5 drücken.

Die folgenden Abschnitte enthalten weitere Details:

Erstellen eines verknüpften Servers

Um einen verteilten Join für einen Windows 2000 Server-Verzeichnisdienst einzurichten, erstellen Sie einen verknüpften Server. Richten Sie dazu die ADSI-Zuordnung mithilfe der sp_addlinkedserver gespeicherten Systemprozedur ein. Diese Prozedur verknüpft einen Namen mit einem OLE DB-Anbieternamen.

Beachten Sie im folgenden Beispiel, dass mehrere Argumente mit der sp_addlinkedserver gespeicherten Systemprozedur verwendet werden:

  • "ADSI" ist das Server Argument und ist der Name dieses verknüpften Servers.
  • "Active Directory Services 2.5" ist das argument srvproduct, das den Namen der OLE DB-Datenquelle darstellt, die Sie als verknüpften Server hinzufügen.
  • "ADSDSOObject" ist das argument provider_name.
  • "adsdatasource" ist das argument data_source, das der Name der Datenquelle ist, die vom OLE DB-Anbieter interpretiert wird.

Der Befehl EXEC wird verwendet, um gespeicherte Systemprozeduren auszuführen.

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

Für windows-authentifizierte Anmeldungen reicht die Self-Mapping aus, um mit SQL Server-Sicherheitsdelegierung auf das Verzeichnis zuzugreifen. Da die Self-Mapping standardmäßig für verknüpfte Server erstellt wird, die über sp_addlinkedservererstellt werden, ist keine andere Anmeldezuordnung erforderlich.

Für SQL Server-authentifizierte Anmeldungen können Sie geeignete Anmeldungen und Kennwörter für die Verbindung mit dem Verzeichnisdienst mithilfe der sp_addlinkedsrvlogin systemgespeicherten Prozedur konfigurieren.

Anmerkung

Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.

 

Erstellen einer authentifizierten SQL Server-Anmeldung

Wenn Sie lieber eine SQL Server-authentifizierte Anmeldung anstelle der Windows-Authentifizierung verwenden möchten, fügen Sie dem verknüpften Server eine Anmeldung hinzu (siehe vorherigen Abschnitt). Verwenden Sie dazu die sp_addlinkedsrvlogin gespeicherte Systemprozedur.

Im folgenden Beispiel gibt es mehrere Argumente, die mit der sp_addlinkedsrvlogin gespeicherten Systemprozedur verwendet werden:

  • "ADSI" ist der rmtsvrname Argument, das der Name des verknüpften Servers ist, der im vorherigen Beispiel erstellt wurde.
  • "Fabrikam\Administrator" ist das argument locallogin, bei dem es sich um die Anmeldung auf dem lokalen Server handelt und dies die SQL Server-Anmeldung oder ein Windows NT-Benutzer sein kann.
  • "CN=Administrator,OU=Sales,DC=activeds,DC=Fabrikam,DC=com" ist das argument rmtuser, d. h. der Benutzername, den Sie für die Verbindung verwenden, da useselffalseist.
  • "secret**2000" ist das rmtpassword, das dem rmtuser

Der Befehl EXEC wird verwendet, um gespeicherte Systemprozeduren auszuführen.

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

Abfragen des Verzeichnisdiensts

Nachdem Sie einen verknüpften Server erstellt haben, verwenden Sie eine OPENQUERY--Anweisung, um eine Abfrage an den Verzeichnisdienst zu senden. Mit der folgenden SQL-Abfrage wird eine virtuelle Tabelle erstellt, die Die Abfrageergebnisse mithilfe der CREATE VIEW-Anweisung enthält. Die erstellte Ansicht heißt "viewADContacts".

Die erste SELECT-Anweisung definiert die Informationen, die vom Verzeichnisdienst abgefragt werden, und ordnet sie einer Spalte in der Tabelle zu. In eckige Klammern eingeschlossene Informationen geben die Daten an, die in die virtuelle Tabelle eingefügt werden. Die Informationen, die sich nicht in Klammern befinden, geben die Daten an, die vom Verzeichnisdienst abgerufen werden. Beachten Sie, dass auf die Informationen, die aus dem Verzeichnisdienst abgerufen werden, durch den LDAP-Anzeigenamen verwiesen werden muss.

Die nächste Anweisung ist die OPENQUERY-Anweisung. Diese Anweisung hat zwei Argumente: ADSI, der Name des verknüpften Servers, den Sie erstellt haben, und eine Abfrage-Anweisung. Die Abfrage-Anweisung enthält die folgenden Elemente:

  • Die SELECT-Anweisung enthält die Liste der Daten, die vom Verzeichnisdienst abgerufen werden. Sie müssen den LDAP-Anzeigenamen verwenden, um anzugeben, nach welchen Daten Sie suchen.
  • Die FROM-Anweisung enthält den Namen des verknüpften Verzeichnisservers, von dem diese Informationen abgerufen werden.
  • Die WHERE--Anweisung stellt die Suchbedingungen bereit. In diesem Beispiel wird nach Kontakten gesucht.

Die letzte SELECT-Anweisung wird verwendet, um Ergebnisse aus der anzuzeigenden Ansicht aufzunehmen.

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