Freigeben über


Erstellen von Verbindungsservern (SQL Server-Datenbank-Engine)

In diesem Thema wird gezeigt, wie Sie mithilfe von SQL Server Management Studio oder Transact-SQL einen Verbindungsserver erstellen und auf Daten aus einer anderen SQL Server zugreifen. Durch Erstellen eines Verbindungsservers können Sie mit Daten aus mehreren Quellen arbeiten. Der Verbindungsserver muss kein weiterer instance SQL Server sein, aber dies ist ein gängiges Szenario.

Hintergrund

Ein Verbindungsserver ermöglicht den Zugriff auf verteilte, heterogene Abfragen für OLE DB-Datenquellen. 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 instance von SQL Server definiert ist, können remote gespeicherte Prozeduren ausgeführt werden.

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

Sicherheit

Berechtigungen

Erfordert bei Verwendung von Transact-SQL-Anweisungen ALTER ANY LINKED SERVER die Berechtigung auf dem Server oder die Mitgliedschaft in der festen Serverrolle setupadmin . Bei Verwendung von Management Studio ist die Berechtigung oder Mitgliedschaft in der festen Serverrolle sysadmin erforderlichCONTROL SERVER.

So erstellen Sie einen Verbindungsserver

Sie können eine der folgenden Anwendungen verwenden:

Verwendung von SQL Server Management Studio

So erstellen Sie einen Verbindungsserver für eine andere Instanz von SQL Server anhand von SQL Server Management Studio
  1. Öffnen Sie SQL Server Management Studio Objekt-Explorer, erweitern Sie Serverobjekte, klicken Sie mit der rechten Maustaste auf Verbindungsserver, und klicken Sie dann auf Neuer Verbindungsserver.

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

    SQL Server
    Identifizieren Sie den Verbindungsserver als instance von MicrosoftSQL Server. Wenn Sie diese Methode zum Definieren eines SQL Server Verbindungsservers verwenden, muss der unter 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 SQL Serverabweichenden OLE DB-Servertyp 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 Serverherstellen, 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.

    Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf den Verbindungsserver, und klicken Sie anschließend auf Verbindung testen, um die Fähigkeit zur Verbindungsherstellung mit einem Verbindungsserver zu testen.

    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.

  3. Wählen Sie im Bereich Servertyp die Option SQL Server aus, um anzugeben, dass der Verbindungsserver eine weitere Instanz von SQL Server ist.

  4. Geben Sie auf der Seite Sicherheit den Sicherheitskontext an, der verwendet wird, wenn der ursprüngliche SQL Server eine Verbindung mit dem Verbindungsserver herstellt. 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.

    Lokale Anmeldung
    Gibt die lokale Anmeldung an, mit der eine Verbindung zum Verbindungsserver hergestellt werden kann. Die lokale Anmeldung kann eine Anmeldung sein, die entweder die SQL Server -Authentifizierung oder eine Windows-authentifizierte Anmeldung verwendet. 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.

    Impersonate
    Ü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.

    Remotebenutzer
    Verwendet den Remotebenutzer für die Zuordnung von Benutzern, die nicht in Lokale Anmeldungdefiniert sind. Der Remotebenutzer muss ein Anmeldename mit SQL Server -Authentifizierung auf dem Remoteserver sein.

    Remotekennwort
    Gibt das Kennwort des Remotebenutzers an.

    Add (Hinzufügen)
    Fügt eine neue lokale Anmeldung hinzu.

    Remove
    Entfernt eine vorhandene lokale Anmeldung.

    Nicht durchgeführt
    Gibt an, dass für nicht in der Liste definierte Anmeldungen keine Verbindung hergestellt wird.

    Nicht in einem Sicherheitskontext verwendet
    Gibt an, dass für nicht in der Liste definierte Anmeldungen eine Verbindung ohne Verwendung eines Sicherheitskontexts hergestellt wird.

    Im aktuellen Sicherheitskontext der Anmeldung verwendet
    Gibt an, dass für nicht in der Liste definierte Anmeldungen eine Verbindung mithilfe des aktuellen Sicherheitskontexts der Anmeldung hergestellt 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
    Gibt an, dass eine Verbindung mithilfe der Anmeldung und des Kennworts hergestellt wird, die in den Feldern Remoteanmeldung und Mit Kennwort für nicht in der Liste definierte Anmeldungen angegeben sind. Die Remoteanmeldung muss eine Anmeldung mit SQL Server -Authentifizierung auf dem Remoteserver sein.

  5. Klicken Sie optional auf die Seite Serveroptionen , um Serveroptionen anzuzeigen oder anzugeben.

    Kompatibel mit Sortierung
    Betrifft die Ausführung verteilter Abfragen für Verbindungsserver. Wenn diese Option auf "true" festgelegt ist, wird in SQL Server 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 von 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 RPC (Remote Procedure Call, Remoteprozeduraufruf) von dem angegebenen 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 keineSQL 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 Serverunterstützte Sortierung sein.

    Verwenden Sie diese Option, wenn auf eine OLE DB-Datenquelle zugegriffen wird, die keine SQL Server-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 Standardwert von sp_configure 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 Standardwert von sp_configure für die Option Timeout für Remoteabfragen .

    Höherstufung von verteilten Transaktionen aktivieren
    Verwenden Sie diese Option, um die Aktionen einer Server-zu-Server-Prozedur durch eine Microsoft 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).

  6. Klicken Sie auf OK.

So zeigen Sie die Anbieteroptionen an
  • Um die Optionen anzuzeigen, die der Anbieter zur Verfügung stellt, klicken Sie auf die Seite für die Anbieteroptionen.

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

    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, die auf lange Spalten (text, oder image) verweisen, ntextnicht zulässig.

    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, lässt SQL Server ebenfalls keinen Ad-hoc-Zugriff zu.

    Unterstützt 'Like'-Operator
    Gibt an, dass der Anbieter Anfragen unterstützt, die das LIKE-Schlüsselwort verwenden.

Verwenden von 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).

So erstellen Sie einen Verbindungsserver für eine andere Instanz von SQL Server anhand von Transact-SQL
  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

So testen Sie den Verbindungsserver

  • Führen Sie folgenden Code aus, um die Verbindung mit dem Verbindungsserver zu testen. Das Beispiel gibt die Namen der Datenbanken auf dem Verbindungsserver zurück.

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

Schreiben einer Abfrage, von der Tabellen von einem Verbindungsserver verknüpft werden

  • 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 vom Verbindungsserver 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.

Weitere Informationen

Verbindungsserver (Datenbank-Engine)
sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL)