Freigeben über


Erstellen von Verbindungsservern (SQL Server-Datenbank-Engine)

Gilt für:SQL ServerAzure SQL Managed Instance

In diesem Artikel wird gezeigt, wie Sie einen verknüpften Server erstellen und auf Daten aus einem anderen SQL Server, einer von Azure SQL verwalteten Instanz oder einer anderen Datenquelle mithilfe von SQL Server Management Studio (SSMS) oder Transact-SQL zugreifen. Verbindungsserver ermöglichen der SQL Server-Datenbank-Engine und Azure SQL Managed Instance, Daten aus den Remotedatenquellen zu lesen und Befehle für die Remotedatenbankserver (z. B. OLE DB-Datenquellen) außerhalb der SQL Server-Instanz auszuführen.

Hintergrund

Verbindungsserver werden in der Regel so konfiguriert, dass die Datenbank-Engine eine Transact-SQL-Anweisung ausführen kann, die Tabellen in einer anderen SQL Server-Instanz oder einem anderen Datenbankprodukt wie Oracle enthält. Viele Arten von Datenquellen können als Verbindungsserver konfiguriert werden, darunter Datenbank-Drittanbieter und Azure Cosmos DB.

Nach der Erstellung eines Verbindungsservers können für den Server verteilte Abfragen ausgeführt werden, und Abfragen können Tabellen von mehreren Datenquellen verknüpfen. Wenn der Verbindungsserver als SQL Server-Instanz oder Azure SQL Managed Instance-Instanz definiert ist, können remote gespeicherte Prozeduren ausgeführt werden.

Die Funktionen und erforderlichen Argumente des Verbindungsservers können erheblich abweichen. In diesem Artikel werden typische Beispiele aufgeführt, allerdings werden nicht alle Optionen beschrieben. Weitere Informationen finden Sie unter sp_addlinkedserver.

Berechtigungen

Für die Verwendung von Transact-SQL-Anweisungen ist entweder eine Berechtigung auf dem Server ALTER ANY LINKED SERVER oder die Mitgliedschaft in der festen Serverrolle setupadmin erforderlich. Wenn Sie Management Studio verwenden, erfordert dies die CONTROL SERVER-Berechtigung oder die Mitgliedschaft in der festen Serverrolle sysadmin.

Erstellen eines Verbindungsservers mit SSMS

Erstellen Sie mithilfe des folgenden Verfahrens einen Verbindungsserver mit SSMS:

Öffnen des Dialogfelds „Neuer Verbindungsserver“

In SQL Server Management Studio (SSMS):

  1. Öffnen Sie den Objekt-Explorer.
  2. Erweitern Sie Serverobjekte.
  3. Klicken Sie mit der rechten Maustaste auf Verbindungsserver.
  4. Wählen Sie Neuer Verbindungsserver aus.

Bearbeiten der Eigenschaften des Verbindungsservers auf der Seite „Allgemein“

  1. Geben Sie auf der Seite Allgemein im Feld Verbindungsserver den Namen der Instanz von SQL Server ein, mit der Sie einen Link herstellen möchten.

    Hinweis

    Wenn die Instanz von SQL Server die Standardinstanz ist, geben Sie den Namen des Computers ein, auf dem die Instanz von SQL Servergehostet wird. Wenn der SQL Server eine benannte Instanz ist, geben Sie den Namen des Computers und den der Instanz ein, z.B. Accounting\SQLExpress.

  2. Geben Sie bei Bedarf den Servertyp und die zugehörigen Informationen an:

    • SQL Server

      Identifizieren Sie den Verbindungsserver als Instanz von Microsoft SQL Server oder eine Azure SQL Managed Instance-Instanz. Wenn Sie einen Verbindungsserver nach dieser Methode definieren, muss der im Feld Verbindungsserver angegebene Name der Netzwerkname des Servers sein. Außerdem stammen alle vom Server abgerufenen Tabellen aus der Standarddatenbank, die für den Benutzernamen auf dem Verbindungsserver definiert wurde.

    • Andere Datenquelle

      Gibt einen von abweichenden OLE DB-Servertyp als SQL Server an. Aktivieren Sie diese Option, um Optionen zu aktivieren.

    • Anbieter

      Wählen Sie eine OLE DB-Datenquelle aus dem Listenfeld aus. Der OLE DB-Anbieter ist mit der angegebenen PROGID in der Registrierung registriert.

    • Produktname

      Geben Sie den Produktnamen der OLE DB-Datenquelle ein, die als Verbindungsserver hinzugefügt werden soll.

    • Datenquelle

      Geben Sie den Namen der Datenquelle ein, wie er durch den OLE DB-Anbieter interpretiert wird. Wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen, geben Sie den Instanznamen an.

    • Anbieterzeichenfolge

      Geben Sie die ProgID des OLE DB-Anbieters ein, die der Datenquelle entspricht. Beispiele für gültige Anbieterzeichenfolgen finden Sie unter sp_addlinkedserver.

    • Location

      Geben Sie den Speicherort der Datenbank ein, wie er durch den OLE DB-Anbieter interpretiert wird.

    • Katalog

      Geben Sie den Namen des Katalogs ein, der beim Herstellen einer Verbindung mit dem OLE DB-Anbieter verwendet werden soll.

Bearbeiten der Eigenschaften des Verbindungsservers auf der Seite „Sicherheit“

Geben Sie auf der Seite Sicherheit den Sicherheitskontext an, der verwendet wird, wenn die ursprüngliche Instanz eine Verbindung mit dem Verbindungsserver herstellt. Es müssen zwei Strategien konfiguriert werden, die allein oder kombiniert verwendet werden können. Die erste besteht darin, Anmeldungen vom lokalen Server dem Remoteserver zuzuordnen, und die zweite beinhaltet, wie der Verbindungsserver Anmeldungen behandeln soll, die nicht zugeordnet sind.

Hinzufügen von Anmeldezuordnungen

Optional können Sie angeben, wie sich bestimmte lokale Serveranmeldungen über den Verbindungsserver authentifizieren.

Wiederholen Sie unter Local server login to remote server login mappings (Zuordnungen von lokalen Serveranmeldungen zu Remote-Serveranmeldungen) den folgenden Vorgang für jede Anmeldung, die Sie zuordnen möchten:

  1. Wählen Sie Hinzufügen.

  2. Geben Sie einen lokalen Anmeldenamen ein.

    Gibt die lokale Anmeldung an, mit der eine Verbindung zum Verbindungsserver hergestellt werden kann. Die lokale Anmeldung kann entweder eine Anmeldung mit SQL Server-Authentifizierung oder eine Anmeldung mit Windows-Authentifizierung sein. Die Nutzung einer Windows-Gruppe oder eines Benutzers einer eigenständigen Datenbank wird nicht unterstützt. Verwenden Sie diese Liste, um die Verbindung mit spezifischen Anmeldungen zu beschränken oder einigen Anmeldungen das Herstellen einer Verbindung unter einer anderen Anmeldung zu ermöglichen.

    Hinweis

    Häufig auftretende Probleme mit Verbindungsservern, die die Windows-Authentifizierung für eine Remote-SQL Server-Instanz verwenden, ergeben sich aus Schwierigkeiten mit Dienstprinzipalnamen (SPNs). Weitere Informationen finden Sie unter Unterstützung von Dienstprinzipalnamen (SPN) in Clientverbindungen. Microsoft Kerberos Configuration Manager for SQL Server ist ein Diagnosetool zur Behebung Kerberos-bezogener Probleme mit der Verbindung mit SQL Server. Weitere Informationen finden Sie unter Microsoft Kerberos-Konfigurations-Manager für SQL Server.

  3. Wählen Sie Identität wechseln aus (optional).

    Übergibt den Benutzernamen und das Kennwort von der lokalen Anmeldung an den Verbindungsserver. Bei SQL Server-Authentifizierung muss eine Anmeldung mit dem genau gleichen Namen und Kennwort auf dem Remoteserver vorhanden sein. Bei Windows-Anmeldungen muss die Anmeldung eine gültige Anmeldung auf dem Verbindungsserver sein.

    Um Identitätswechsel verwenden zu können, muss die Konfiguration die Anforderungen für die Delegierung erfüllen.

  4. Geben Sie einen Remotebenutzer an, wenn Sie keinen Identitätswechsel durchführen.

    Verwenden Sie den Remotebenutzer für die Zuordnung von Benutzern, die in Lokale Anmeldung definiert sind. Der Remotebenutzer muss ein Anmeldename mit SQL Server-Authentifizierung auf dem Remoteserver sein.

  5. Geben Sie ein Remotekennwort an, wenn Sie keinen Identitätswechsel durchführen.

    Gibt das Kennwort des Remotebenutzers an.

  6. Wählen Sie Entfernen aus, um bei Bedarf eine vorhandene lokale Anmeldung zu entfernen.

Angeben des Standardsicherheitskontexts für Anmeldungen, die nicht in der Zuordnungsliste vorhanden sind

In einer Domänenumgebung, in der Benutzer Verbindungen anhand ihrer Domänenanmeldenamen herstellen, ist die Auswahl der Option Im aktuellen Sicherheitskontext der Anmeldung verwendet oft die beste Wahl. Stellen die Benutzer die Verbindung mit dem originalen SQL Server anhand eines SQL Server -Anmeldenamens her, empfiehlt sich häufig die Auswahl von In folgendem Sicherheitskontext verwendet, um anschließend die nötigen Anmeldeinformationen zur Authentifizierung am Verbindungsserver bereitzustellen.

Wählen Sie eine der folgenden Optionen aus:

  • Nicht durchgeführt

    Für die in der Liste nicht definierten Anmeldungen wird keine Verbindung hergestellt.

  • Nicht in einem Sicherheitskontext verwendet

    Eine Verbindung wird hergestellt, ohne einen Sicherheitskontext für Anmeldungen zu verwenden, die nicht in der Liste definiert sind.

  • Im aktuellen Sicherheitskontext der Anmeldung verwendet

    Eine Verbindung wird mithilfe des aktuellen Sicherheitskontexts der Anmeldung für Anmeldungen hergestellt, die in der Liste nicht definiert sind. Wenn eine Verbindung mit dem lokalen Server mithilfe der Windows-Authentifizierung hergestellt wird, werden Ihre Windows-Anmeldeinformationen verwendet, um eine Verbindung mit dem Remoteserver herzustellen. Wenn eine Verbindung mit dem lokalen Server mithilfe der SQL Server-Authentifizierung hergestellt wird, werden Der Anmeldename und das Kennwort verwendet, um eine Verbindung mit dem Remoteserver herzustellen. In diesem Fall muss eine Anmeldung mit dem genau gleichen Namen und Kennwort auf dem Remoteserver vorhanden sein.

  • In folgendem Sicherheitskontext verwendet

    Eine Verbindung wird mithilfe der in den Feldern Remoteanmeldung und Mit Kennwort angegebenen Anmeldeinformationen und Kennwort für Anmeldungen hergestellt, die in der Liste nicht definiert sind. Die Remoteanmeldung muss eine Anmeldung mit SQL Server-Authentifizierung auf dem Remoteserver sein.

Achtung

Wenn ein Verbindungsserver mit der Option In folgendem Sicherheitskontext verwendet konfiguriert ist, kann jeder Benutzer in der Instanz mithilfe dieses Kontexts auf den Remote-Verbindungsserver zugreifen. Dies kann das unbeabsichtigte Potenzial für Missbrauch oder böswilligen internen Zugriff haben. Der SQL-authentifizierten Entfernten Anmeldung für den Verbindungsserver sollten nur die erforderlichen Mindestberechtigungen für den Remoteserver erteilt werden, um das Prinzip der geringstmöglichen Berechtigungen zu gewährleisten und die Angriffsfläche zu verringern.

Bearbeiten der Eigenschaften des Verbindungsservers auf der Seite „Serveroptionen“ (Optional)

Wählen Sie Serveroptionen aus, um die Serveroptionen anzuzeigen oder anzugeben. Sie können die folgenden Optionen bearbeiten:

  • Kompatibel mit Sortierung

    Betrifft die Ausführung verteilter Abfragen für Verbindungsserver. Wenn diese Option auf „true“ festgelegt ist, SQL Server wird in vorausgesetzt, dass alle Zeichen auf dem Verbindungsserver bezüglich Zeichensatz und Sortierreihenfolge mit dem lokalen Server kompatibel sind. Dies ermöglicht SQL Server, Vergleiche für Zeichenspalten an den Provider zu senden. Wird diese Option nicht festgelegt, werden vom SQL Server Vergleiche für Zeichenspalten immer lokal ausgewertet.

    Diese Option sollte nur festgelegt werden, wenn sicher ist, dass die Datenquelle, die dem Verbindungsserver entspricht, den gleichen Zeichensatz und die gleiche Sortierreihenfolge wie der lokale Server verwendet.

  • Datenzugriff

    Aktiviert und deaktiviert den Zugriff auf verteilte Abfragen für Verbindungsserver.

  • RPC

    Aktiviert Remoteprozeduraufruf (RPC) vom angegeben Server

  • RPC-Ausgabe

    Aktiviert RPC zu dem angegebenen Server.

  • Remotesortierung verwenden

    Bestimmt, ob die Sortierung einer entfernten Spalte oder eines lokalen Servers verwendet wird.

    Wenn True angegeben ist, wird für SQL Server-Datenquellen die Sortierung der Remotespalten und für Datenquellen, die keine SQL Server-Datenquellen sind, die im Sortierungsnamen angegebene Sortierung verwendet.

    Bei False verwenden verteilte Abfragen immer die Standardsortierung des lokalen Servers, während der Sortierungsname und die Sortierung von Remotespalten ignoriert werden. Die Standardeinstellung ist „false“.

  • Sortierungsname

    Gibt den Namen der von der Remotedatenquelle verwendeten Sortierung an, wenn für die Option zum Verwenden der Remotesortierung der Wert True festgelegt ist und es sich bei der Datenquelle nicht um eine SQL Server-Datenquelle handelt. Der Name muss eine von SQL Server unterstützte Sortierung sein.

    Verwenden Sie diese Option, wenn auf eine OLE DB-Datenquelle zugegriffen wird, die keine -Datenquelle ist, deren Sortierung jedoch mit einer der SQL Server-Sortierungen übereinstimmt.

    Der Verbindungsserver muss eine einzige Sortierung unterstützen, die für alle Spalten in diesem Server verwendet wird. Legen Sie diese Option nicht fest, wenn der Verbindungsserver mehrere Sortierungen in einer einzelnen Datenquelle unterstützt oder wenn festgestellt wird, dass die Sortierung des Verbindungsservers nicht mit einer der SQL Server-Sortierungen übereinstimmt.

  • Verbindungstimeout

    Timeoutwert in Sekunden zum Herstellen einer Verbindung mit einem verknüpften Server.

    Wenn 0, verwenden Sie den standardmäßigen sp_configure Remoteanmeldung.

  • Abfragetimeout

    Timeoutwert in Sekunden für Abfragen für einen verknüpften Server.

    Wenn 0, verwenden Sie den sp_configure standardmäßigen Timeoutoptionswert für Remoteabfragen .

  • Höherstufung von verteilten Transaktionen aktivieren

    Verwenden Sie diese Option, um die Aktionen einer Server-zu-Server-Prozedur durch eine Distributed Transaction Coordinator-Transaktion (MS DTC) zu schützen. Wenn diese Option auf TRUE festgelegt ist und eine remote gespeicherte Prozedur aufgerufen wird, wird eine verteilte Transaktion gestartet und bei MS DTC eingetragen. Weitere Informationen finden Sie unter sp_serveroption.

Speichern des Verbindungsservers

Wählen Sie OK aus.

Anzeigen oder Bearbeiten der Optionen für den Anbieter des Verbindungsservers in SSMS

Nicht alle Anbieter verfügen über die gleichen Optionen. Bei einigen Typen von Daten sind z. B. Indizes verfügbar, für einige nicht. Mittels dieses Dialogfelds kann der SQL Server die Funktionen des Anbieters verstehen. SQL Server installiert einige allgemeine Datenanbieter; wenn das Produkt, das die Daten bereitstellt, jedoch geändert wird, unterstützt der von SQL Server installierte Anbieter möglicherweise nicht alle neuesten Funktionen. Die beste Informationsquelle zu den Funktionen des Produkts, das die Daten bereitstellt, ist die Dokumentation für dieses Produkt.

So öffnen Sie die Seite Anbieteroptionen des Verbindungsservers in SSMS:

  1. Öffnen Sie den Objekt-Explorer.
  2. Erweitern Sie Serverobjekte.
  3. Erweitern Sie Verbindungsserver.
  4. Erweitern Sie Anbieter.
  5. Klicken Sie mit der rechten Maustaste auf einen Anbieter, und wählen Sie Eigenschaften aus.

Die Anbieteroptionen sind wie folgt definiert:

  • Dynamischer Parameter

    Gibt an, dass der Anbieter die Parameter-Markierungssyntax für parametrisierte Abfragen zulässt ?. Legen Sie diese Option nur fest, wenn der Anbieter die ICommandWithParameters-Schnittstelle unterstützt und eine ? als Parametermarkierung unterstützt. Durch diese Option kann SQL Server parametrisierte Abfragen für den Anbieter ausführen. Die Fähigkeit zur Ausführung parametrisierter Abfragen für den Anbieter kann bei bestimmten Abfragen zu einer verbesserten Leistung führen.

  • Geschachtelte Abfragen

    Gibt an, dass der Anbieter geschachtelte SELECT Anweisungen in der FROM Klausel zulässt. Wenn Sie diese Option festlegen, kann SQL Server bestimmte Abfragen an den Anbieter delegieren, die Schachtelungsanweisungen SELECT in der FROM Klausel erfordern.

  • Nur Ebene Null

    Es werden nur OLE DB-Schnittstellen der Ebene 0 mit diesem Anbieter aufgerufen.

  • InProcess zulassen

    SQL Server ermöglicht, dass der Anbieter als In-Process-Server instanziiert wird. Wenn diese Option nicht festgelegt ist, wird der Anbieter standardmäßig außerhalb des SQL Server-Prozesses instanziiert. Durch Instanziieren des Anbieters außerhalb des SQL Server-Prozesses wird der SQL Server-Prozess vor Fehlern beim Anbieter geschützt. Wenn der Anbieter außerhalb des SQL Server-Prozesses instanziiert wird, sind Updates oder Einfügungen nicht zulässig, die auf lange Spalten verweisen (text, ntext, or image).

  • Nicht durchgeführte Updates

    SQL Server lässt Updates zu, selbst wenn ITransactionLocal nicht zur Verfügung steht. Wenn diese Option aktiviert ist, sind Updates für den Anbieter nicht wiederherstellbar, da der Anbieter keine Transaktionen unterstützt.

  • Index als Zugriffsmethode

    SQL Server versucht, Indizes des Anbieters zum Abrufen von Daten zu verwenden. Standardmäßig werden Indizes nur für Metadaten verwendet und nicht geöffnet.

  • Ad-hoc-Zugriffe nicht zulassen

    SQL Server erlaubt keinen Ad-hoc-Zugriff über die Funktionen OPENROWSET und OPENDATASOURCE auf den OLE DB-Anbieter. Wenn diese Option nicht festgelegt ist, ist in SQL Server kein Ad-hoc-Zugriff zulässig.

  • Unterstützt 'Like'-Operator

    Gibt an, dass der Anbieter Abfragen mithilfe des LIKE Schlüsselworts unterstützt.

Erstellen eines Verbindungsservers mit Transact-SQL

Verwenden Sie zum Erstellen eines verknüpften Servers mithilfe von Transact-SQL die Anweisungen sp_addlinkedserver, CREATE LOGIN und sp_addlinkedsrvlogin .

In diesem Beispiel wird mithilfe von Transact-SQL ein Verbindungsserver in einer anderen SQL Server-Instanz erstellt:

  1. Geben Sie im Abfrage-Editor den folgenden Transact-SQL-Befehl ein, um eine Verbindung mit einer SQL Server-Instanz namens SRVR002\ACCTG herzustellen:

    USE [master];
    GO
    
    EXECUTE master.dbo.sp_addlinkedserver
        @server = N'SRVR002\ACCTG',
        @srvproduct = N'SQL Server';
    GO
    
  2. Führen Sie folgenden Code aus, um den Verbindungsserver zur Verwendung der Domänenanmeldeinformationen des Anmeldenamens zu konfigurieren, der den Verbindungsserver verwendet.

    EXECUTE master.dbo.sp_addlinkedsrvlogin
        @rmtsrvname = N'SRVR002\ACCTG',
        @locallogin = NULL,
        @useself = N'True';
    GO
    

Follow up: Schritte, die ausgeführt werden müssen, nachdem Sie einen verknüpften Server erstellt haben

Mit den folgenden Schritten können Sie einen Verbindungsserver überprüfen.

Testen des verknüpften Servers

Ziehen Sie einen der beiden folgenden Ansätze in Betracht, um die Authentifizierung eines Verbindungsservers in Ihrem aktuellen Sicherheitskontext zu testen.

  • Um die Möglichkeit zu testen, eine Verbindung mit einem verknüpften Server in SSMS herzustellen, navigieren Sie zum verknüpften Server im Objekt-Explorer, klicken Sie mit der rechten Maustaste auf den verknüpften Server, und wählen Sie dann " Verbindung testen" aus.

  • Um die Möglichkeit zu testen, eine Verbindung mit einem verknüpften Server in T-SQL herzustellen, führen Sie eine grundlegende SELECT Anweisung aus, z. B. zum Abrufen grundlegender Datenbankkataloginformationen. Dieses Beispiel gibt die Namen der Datenbanken auf dem Verbindungsserver zurück.

    SELECT name
    FROM [SRVR002\ACCTG].master.sys.databases;
    GO
    

Verknüpfen von Tabellen von einem Verbindungsserver

Verwenden Sie vierteilige Namen, um auf ein Objekt auf einem Verbindungsserver zu verweisen. Führen Sie folgenden Code aus, um eine Liste aller Anmeldenamen auf dem lokalen Server und die entsprechenden Anmeldenamen auf dem Verbindungsserver zurückzugeben.

SELECT local.name AS LocalLogins,
       linked.name AS LinkedLogins
FROM master.sys.server_principals AS local
     LEFT OUTER JOIN [SRVR002\ACCTG].master.sys.server_principals AS linked
         ON local.name = linked.name;
GO

Wenn für den Anmeldenamen des Verbindungsservers NULL zurückgegeben wird, zeigt dies an, dass der Anmeldename auf dem Verbindungsserver nicht vorhanden ist. Diese Anmeldungen können den verknüpften Server nur verwenden, wenn der verknüpfte Server so konfiguriert ist, dass er einen anderen Sicherheitskontext übergibt oder der verknüpfte Server anonyme Verbindungen akzeptiert.

Verbindungsserver mit Azure SQL Managed Instance

Wenn Sie azure SQL Managed Instance verwenden, lesen Sie die folgenden Beispiele aus sp_addlinkedserver: