Verbindungsserver (Datenbankmodul)

Konfigurieren Sie einen Verbindungsserver, um SQL Server Database Engine (Datenbankmodul) für die Ausführung von Befehlen für OLE DB-Datenquellen außerhalb der Instanz von SQL Server zu aktivieren. In der Regel werden Verbindungsserver so konfiguriert, um Database Engine (Datenbankmodul) für die Ausführung einer Transact-SQL-Anweisung, die Tabellen in einer anderen Instanz von SQL Server enthält, oder ein anderes Datenbankprodukt z. B. Oracle zu aktivieren. Viele Typen von OLE DB-Datenquellen können als Verbindungsserver konfiguriert werden, einschließlich Microsoft Access und Excel. Verbindungsserver bieten die folgenden Vorteile:

  • Die Fähigkeit, auf Daten von außerhalb von SQL Server zuzugreifen.

  • Die Fähigkeit, verteilte Abfragen, Updates, Befehle und Transaktionen auf heterogenen Datenquellen im gesamten Unternehmen auszugeben.

  • Die Möglichkeit, verschiedene Datenquellen ähnlich zu adressieren.

Ein Verbindungsserver kann mit SQL Server Management Studio oder mithilfe der sp_addlinkedserver (Transact-SQL)-Anweisung konfiguriert werden. OLE DB-Anbieter variieren stark in Hinblick auf Typ und Anzahl der erforderlichen Parameter. Bei manchen Anbietern müssen Sie beispielsweise einen Sicherheitskontext für die Verbindung mit sp_addlinkedsrvlogin (Transact-SQL) angeben. Einige OLE DB-Anbieter ermöglichen es SQL Server, Daten in der OLE DB-Quelle zu aktualisieren. Andere Anbieter stellen nur schreibgeschützten Datenzugriff bereit. Informationen zu den einzelnen OLE DB-Anbietern finden Sie in der jeweiligen Dokumentation des OLE DB-Anbieters.

Verbindungsserverkomponenten

Eine Verbindungsserverdefinition gibt die folgenden Objekte an:

  • Einen OLE DB-Anbieter.

  • Eine OLE DB-Datenquelle.

Ein OLE DB-Anbieter ist eine DLL (Dynamic Link Library), die mit einer bestimmten Datenquelle interagiert und sie verwaltet. Eine OLE DB-Datenquelle identifiziert die spezielle Datenbank, auf die über OLE DB zugegriffen werden kann. Obwohl es sich bei Datenquellen, die über Verbindungsserverdefinitionen abgefragt werden, normalerweise um Datenbanken handelt, sind OLE DB-Anbieter für eine Vielzahl von Dateien und Dateiformaten verfügbar. Dazu gehören Textdateien, Kalkulationstabellendaten und die Ergebnisse aus Volltextsuchläufen.

Der OLE DB-Anbieter für Microsoft SQL Server Native Client (PROGID: SQLNCLI10) ist der offizielle OLE DB-Anbieter für SQL Server.

HinweisHinweis

Die verteilten Abfragen von SQL Server sind jedoch so entworfen, dass sie mit jedem OLE DB-Anbieter zusammenarbeiten, der die erforderlichen OLE DB-Schnittstellen implementiert. SQL Server wurde jedoch nur für den OLE DB-Anbieter für SQL Server Native Client und bestimmte andere Anbieter getestet.

Einzelheiten zu Verbindungsservern

Die folgende Abbildung zeigt die Grundlagen einer Verbindungsserverkonfiguration.

Clientebene, Serverebene und Datenbankserver-Ebene

Verbindungsserver werden in der Regel für die Verarbeitung verteilter Abfragen verwendet. Führt eine Clientanwendung eine verteilte Abfrage über einen Verbindungsserver aus, analysiert SQL Server den Befehl und sendet Anforderungen an OLE DB. Für eine Rowsetanforderung kann eine Abfrage für den Anbieter ausgeführt oder eine Basistabelle vom Anbieter geöffnet werden.

Damit eine Datenquelle Daten über einen Verbindungsserver zurückgibt, muss der OLE DB-Anbieter (DLL) für diese Datenquelle auf demselben Server wie die Instanz von SQL Server vorhanden sein.

Wenn ein OLE DB-Anbieter eines Drittanbieters verwendet wird, müssen dem Konto, unter dem der SQL Server-Dienst ausgeführt wird, Lese- und Ausführungsberechtigungen für das Verzeichnis (und alle Unterverzeichnisse) erteilt worden sein, in dem der Anbieter installiert ist.

Verwalten von Anbietern

Eine Gruppe von Optionen steuert, wie SQL Server OLE DB-Anbieter lädt und verwendet, die in der Registrierung angegeben werden.

Verwalten von Verbindungsserverdefinitionen

Beim Einrichten eines Verbindungsservers sollten die Verbindungsinformationen und Datenquelleninformationen in SQL Server registriert werden. Nach der Registrierung kann über einen einzelnen logischen Namen auf diese Datenquelle verwiesen werden.

Sie können gespeicherte Prozeduren und Katalogsichten zum Verwalten von Verbindungsserverdefinitionen verwenden:

  • Erstellen Sie eine Verbindungsserverdefinition, indem Sie sp_addlinkedserver ausführen.

  • Zeigen Sie Informationen zu den in einer bestimmten Instanz von SQL Server definierten Verbindungsservern an, indem Sie eine Abfrage der sys.servers-Systemkatalogsichten ausführen.

  • Löschen Sie eine Verbindungsserverdefinition, indem Sie sp_dropserver ausführen. Sie können mit dieser gespeicherten Prozedur auch einen Remoteserver entfernen.

Sie können Verbindungsserver auch mithilfe von SQL Server Management Studio definieren. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf Serverobjekte, klicken Sie auf Neu, und klicken Sie dann auf Verbindungsserver. Sie können eine Verbindungsserverdefinition löschen, indem Sie mit der rechten Maustaste auf den Namen des Verbindungsservers und dann auf Löschen klicken.

Wenn Sie eine verteilte Abfrage auf einem Verbindungsserver ausführen, sollten Sie einen vollqualifizierten vierteiligen Tabellennamen für jede Datenquelle einschließen, die abgefragt werden soll. Dieser vierteilige Name muss die Form linked_server_name.catalog**.schema.**object_name aufweisen.

HinweisHinweis

Verbindungsserver können so definiert werden, dass sie zurück auf den Server zeigen, auf dem sie definiert sind (zurücklaufen = loop back). Loopbackserver sind sehr nützlich, um eine Anwendung, von der verteilte Abfragen verwendet werden, in einem Netzwerk mit einem einzelnen Server zu testen. Loopbackverbindungsserver sind für Tests bestimmt und werden für viele Vorgänge, z. B. verteilte Transaktionen, nicht unterstützt.

Verwandte Aufgaben

Erstellen von Verbindungsservern (SQL Server-Datenbankmodul)

sp_addlinkedserver (Transact-SQL)

sp_addlinkedsrvlogin (Transact-SQL)

sp_dropserver (Transact-SQL)

Verwandte Inhalte

sys.servers (Transact-SQL)

sp_linkedservers (Transact-SQL)