Erstellen von Verbindungsservern (SQL Server-Datenbankmodul)
In diesem Thema wird die Erstellung eines Verbindungsservers und das Zugreifen auf Daten von einem anderen SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL erläutert. Durch Erstellen eines Verbindungsservers können Sie mit Daten aus mehreren Quellen arbeiten. Der Verbindungsserver muss keine weitere Instanz von SQL Server sein, allerdings ist dies ein gängiges Szenario.
In diesem Thema
Vorbereitungen:
Hintergrund
Sicherheit
Beispiele:
SQL Server Management Studio
Transact-SQL
Nachverfolgung: Nach der Erstellung eines Verbindungsservers zu unternehmende Schritte
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 Instanz von SQL Server definiert wird, 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 die ALTER ANY LINKED SERVER-Berechtigung auf dem Server oder die Mitgliedschaft in der festen Serverrolle setupadmin. Erfordert bei Verwendung von Management Studio die CONTROL SERVER-Berechtigung oder die Mitgliedschaft in der festen Serverrolle sysadmin.
[Nach oben]
So erstellen Sie einen Verbindungsserver
Sie können eine der folgenden Anwendungen verwenden:
SQL Server Management Studio
Transact-SQL
Verwenden von SQL Server Management Studio
So erstellen Sie einen Verbindungsserver für eine andere Instanz von SQL Server anhand von SQL Server Management Studio
Öffnen Sie in SQL Server Management Studio den Objekt-Explorer, erweitern Sie Serverobjekte, klicken Sie mit der rechten Maustaste auf Verbindungsserver, und klicken Sie auf Neuer Verbindungsserver.
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
Identifiziert den Verbindungsserver als eine Instanz von Microsoft SQL Server. Wenn Sie einen Verbindungsserver von SQL Server 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 SQL Server abweichenden 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 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).Speicherort
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 dann auf Verbindung testen, um die Möglichkeit zum Herstellen einer Verbindung 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 Server gehostet wird. Wenn SQL Server eine benannte Instanz ist, geben Sie den Namen des Computers und den Namen der Instanz ein, z. B. "Accounting\SQLExpress".
Wählen Sie im Bereich Servertyp die Option SQL Server aus, um anzugeben, dass der Verbindungsserver eine weitere Instanz von SQL Server ist.
Geben Sie auf der Seite Sicherheit den Sicherheitskontext an, der beim Herstellen einer Verbindung mit dem Verbindungsserver durch den originalen SQL Server verwendet wird. 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.Identität annehmen
Ü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 Anmeldung definiert sind. Der Remotebenutzer muss ein Anmeldename mit SQL Server-Authentifizierung auf dem Remoteserver sein.Remotekennwort
Gibt das Kennwort des Remotebenutzers an.Hinzufügen
Fügt eine neue lokale Anmeldung hinzu.Entfernen
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.
Klicken Sie optional auf die Seite Serveroptionen, um Serveroptionen anzuzeigen oder zu bestimmen.
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 für die Datenquelle, die dem Verbindungsserver entspricht, der gleiche Zeichensatz und die gleiche Sortierreihenfolge wie für den lokalen Server verwendet wird.
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 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. Der Standard 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 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.Verwenden Sie bei 0 den sp_configure-Standard-Remoteabfragetimeout-Optionswert.
Abfragetimeout
Timeoutwert in Sekunden für Abfragen auf einem Verbindungsserver.Verwenden Sie bei 0 den sp_configure-Standard-Abfragewartezeit-Optionswert.
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).
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 geschachtelteSELECT-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 Spalten mit langen Daten verweisen (text, ntext, oder 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 zu. 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.
[Nach oben]
Verwendung von Transact-SQL
Um einen Verbindungsserver mit Transact-SQL zu erstellen, verwenden Sie die sp_addlinkedserver (Transact-SQL)CREATE LOGIN (Transact-SQL)- und sp_addlinkedsrvlogin (Transact-SQL)-Anweisungen.
So erstellen Sie einen Verbindungsserver für eine andere Instanz von SQL Server anhand von Transact-SQL
Geben Sie im Abfrage-Editor folgenden Transact-SQL-Befehl ein, um eine Instanz von SQL Server mit dem Namen SRVR002\ACCTG zu verknüpfen:
USE [master] GO EXEC master.dbo.sp_addlinkedserver @server = N'SRVR002\ACCTG', @srvproduct=N'SQL Server' ; GO
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
[Nach oben]
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.
[Nach oben]
Siehe auch
Verweis
sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL)