Erstellen von Verbindungsservern (SQL Server-Datenbank-Engine)

Gilt für:SQL ServerAzure SQL Managed Instance

In diesem Artikel wird gezeigt, wie Sie mithilfe von SQL Server Management Studio (SSMS) oder Transact-SQL einen Verbindungsserver erstellen und Daten aus einer anderen SQL Server-Instanz, einer Instanz von Azure SQL Managed Instance oder einer anderen Datenquelle abrufen. 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 (Transact-SQL).

Berechtigungen

Wenn Sie Transact-SQL-Anweisungen verwenden, ist die Berechtigung Beliebigen Verbindungsserver ändern auf dem Server oder die Mitgliedschaft in der festen Serverrolle setupadmin erforderlich. Für die Verwendung von Management Studio ist die CONTROL SERVER -Berechtigung oder die Mitgliedschaft in der festen Serverrolle sysadmin erforderlich.

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“

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.

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. Durch Klicken auf diese Option werden die darunter aufgeführten Optionen aktiviert.

    • 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 (Transact-SQL).

    • 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 aus.

  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
    Für die nicht in der Liste definierten Anmeldungen wird eine Verbindung hergestellt, ohne dass dabei ein Sicherheitskontext verwendet wird.

  • Im aktuellen Sicherheitskontext der Anmeldung verwendet
    Für die nicht in dieser Liste definierten Anmeldungen wird eine Verbindung hergestellt, wobei der aktuelle Sicherheitskontexts der Anmeldung verwendet wird. Wenn die Verbindung mit dem lokalen Server mithilfe der Windows-Authentifizierung hergestellt wurde, werden zum Herstellen der Verbindung mit dem Remoteserver Ihre Windows-Anmeldeinformationen verwendet. Wenn die Verbindung mit dem lokalen Server mithilfe der SQL Server-Authentifizierung hergestellt wurde, werden zum Herstellen der Verbindung mit dem Remoteserver Anmeldename und Kennwort verwendet. In diesem Fall muss eine Anmeldung mit dem genau gleichen Namen und Kennwort auf dem Remoteserver vorhanden sein.

  • In folgendem Sicherheitskontext verwendet
    Für die nicht in dieser Liste definierten Anmeldungen wird eine Verbindung mithilfe der Anmeldung und des Kennworts hergestellt, die in den Feldern Remoteanmeldung und With Password (Mit Kennwort) angegeben sind. Die Remoteanmeldung muss eine Anmeldung mit SQL Server-Authentifizierung auf dem Remoteserver sein.

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 Out
    Aktiviert RPC zu dem angegebenen Server.

  • Remotesortierung verwenden
    Bestimmt, ob die Sortierung einer Remotespalte 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.

    Wenn False angegeben ist, 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 für das Herstellen einer Verbindung mit einem Verbindungsserver.

    Wenn der Wert 0 beträgt, verwenden Sie den sp_configure-Standard für die Option remote login timeout.

  • Abfragetimeout
    Timeoutwert in Sekunden für Abfragen auf einem Verbindungsserver.

    Wenn der Wert 0 beträgt, verwenden Sie den sp_configure-Standard für die Option remote query timeout.

  • 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 (Transact-SQL).

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
    Zeigt an, dass der Anbieter die Parametermarkierungssyntax '?' für parametrisierte Abfragen zulässt. Legen Sie diese Option nur dann fest, wenn der Anbieter die ICommandWithParameters -Schnittstelle und ein Fragezeichen (?) 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
    Zeigt an, dass der Anbieter geschachtelte SELECT -Anweisungen in der FROM-Klausel zulässt. Das Festlegen dieser Option ermöglicht es SQL Server, bestimmte Abfragen, die das Schachteln von SELECT-Anweisungen in der FROM-Klausel erfordern, an den Anbieter zu delegieren.

  • 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 Anfragen unterstützt, die das LIKE-Schlüsselwort verwenden.

Erstellen eines Verbindungsservers mit Transact-SQL

Verwenden Sie zum Erstellen eines Verbindungsservers mithilfe von Transact-SQL die Anweisungen sp_addlinkedserver (Transact-SQL), CREATE LOGIN (Transact-SQL) und sp_addlinkedsrvlogin (Transact-SQL).

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  
    EXEC 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.

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

Nachverfolgung: Nach der Erstellung eines Verbindungsservers zu unternehmende Schritte

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 zu testen, ob eine Verbindung mit einem Verbindungsserver in SSMS hergestellt werden kann, navigieren Sie zum Verbindungsserver in Object Explorer, klicken Sie mit der rechten Maustaste auf den Verbindungsserver, und wählen Sie anschließend Verbindung testen aus.

  • Um zu testen, ob eine Verbindung mit einem Verbindungsserver in T-SQL hergestellt werden kann, führen Sie eine einfache SELECT-Anweisung aus, um beispielsweise grundlegende Informationen zu Datenbankkatalogen abzurufen. 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 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. Von diesen Anmeldenamen kann der Verbindungsserver erst verwendet werden, wenn der Verbindungsserver so konfiguriert wird, dass ein anderer Sicherheitskontext weitergegeben wird oder der Verbindungsserver anonyme Verbindungen akzeptiert.

Verbindungsserver mit Azure SQL Managed Instance

Sehen Sie sich die folgenden Beispiele aus sp_addlinkedserver (Transact-SQL) an, wenn Sie Azure SQL Managed Instance verwenden:

Nächste Schritte

Weitere Informationen zum Verwalten von Verbindungsservern finden Sie in den folgenden Artikeln: