Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird gezeigt, wie Sie einen verknüpften Server erstellen und mithilfe von SQL Server Management Studio oder Transact-SQL auf Daten von einem anderen SQL Server zugreifen. Durch Erstellen eines Verbindungsservers können Sie mit Daten aus mehreren Quellen arbeiten. Der verknüpfte Server muss keine andere Instanz von SQL Server sein, das ist jedoch ein gängiges Szenario.
Hintergrund
Ein verknüpfter Server ermöglicht den Zugriff auf verteilte, heterogene Abfragen für OLE DB-Datenquellen. Nachdem ein verknüpfter Server erstellt wurde, können verteilte Abfragen auf diesem Server ausgeführt werden, und Abfragen können Tabellen aus mehreren Datenquellen verknüpfen. Wenn der verknüpfte Server als Instanz von SQL Server definiert ist, können remote gespeicherte Prozeduren ausgeführt werden.
Die Funktionen und die erforderlichen Argumente des verknüpften Servers können erheblich variieren. Die Beispiele in diesem Thema enthalten ein typisches Beispiel, aber alle Optionen werden nicht beschrieben. Weitere Informationen finden Sie unter sp_addlinkedserver (Transact-SQL).
Sicherheit
Erlaubnisse
Wenn Sie Transact-SQL-Anweisungen verwenden, erfordert dies ALTER ANY LINKED SERVER Berechtigung auf dem Server oder Mitgliedschaft in der festen Serverrolle setupadmin. Wenn Sie Management Studio verwenden, ist die Berechtigung oder Mitgliedschaft in der festen Serverrolle "sysadmin" erforderlichCONTROL SERVER.
So erstellen Sie einen verknüpften Server
Sie können eine der folgenden Optionen verwenden:
Verwendung von SQL Server Management Studio
So erstellen Sie einen verknüpften Server mit einer anderen Sql Server-Instanz mit SQL Server Management Studio
Öffnen Sie in SQL Server Management Studio den Objekt-Explorer, erweitern Sie Serverobjekte, klicken Sie mit der rechten Maustaste auf verknüpfte Server, und klicken Sie dann auf "Neuer verknüpfter Server".
Geben Sie auf der Seite "Allgemein " im Feld "Verknüpfter Server " den Namen der Instanz von SQL Server ein, mit der Sie eine Verknüpfung herstellen.
SQL Server
Identifizieren Sie den verknüpften Server als Instanz von MicrosoftSQL Server. Wenn Sie diese Methode zum Definieren eines verknüpften SQL Server-Servers verwenden, muss der name, der auf dem verknüpften Server angegeben ist, der Netzwerkname des Servers sein. Außerdem stammen alle vom Server abgerufenen Tabellen aus der Standarddatenbank, die für die Anmeldung auf dem verknüpften Server definiert ist.Andere Datenquelle
Geben Sie einen anderen OLE DB-Servertyp als SQL Server an. Wenn Sie auf diese Option klicken, werden die darunter stehenden Optionen aktiviert.Anbieter
Wählen Sie im Listenfeld eine OLE DB-Datenquelle aus. Der OLE DB-Anbieter wird bei der angegebenen PROGID in der Registrierung registriert.Produktname
Geben Sie den Produktnamen der OLE DB-Datenquelle ein, die als verknüpfter Server hinzugefügt werden soll.Datenquelle
Geben Sie den Namen der Datenquelle ein, wie sie vom OLE DB-Anbieter interpretiert wird. Wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen, geben Sie den Namen der Instanz an.Anbieterzeichenfolge
Geben Sie den eindeutigen programmgesteuerten Bezeichner (PROGID) des OLE DB-Anbieters ein, der der Datenquelle entspricht. Beispiele für gültige Anbieterzeichenfolgen finden Sie unter sp_addlinkedserver (Transact-SQL).Ort
Geben Sie den Speicherort der Datenbank ein, wie sie vom 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.Um die Möglichkeit zum Herstellen einer Verbindung mit einem verknüpften Server zu testen, klicken Sie im Objekt-Explorer mit der rechten Maustaste auf den verknüpften Server, und klicken Sie dann auf " Verbindung 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 der 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 ServertypbereichSQL Server aus, um anzugeben, dass der verknüpfte Server eine andere Instanz von SQL Server ist.
Geben Sie auf der Seite "Sicherheit " den Sicherheitskontext an, der verwendet wird, wenn der ursprüngliche SQL Server eine Verbindung mit dem verknüpften Server herstellt. In einer Domänenumgebung, in der Benutzer mithilfe ihrer Domänenanmeldungen eine Verbindung herstellen, ist die Auswahl "Mit dem aktuellen Sicherheitskontext der Anmeldung erfolgen " häufig die beste Wahl. Wenn Benutzer mithilfe einer SQL Server-Anmeldung eine Verbindung mit dem ursprünglichen SQL Server herstellen, ist es oft die beste Wahl, mithilfe dieses Sicherheitskontexts auszuwählen und dann die erforderlichen Anmeldeinformationen bereitzustellen, um sich am verknüpften Server zu authentifizieren.
Lokale Anmeldung
Geben Sie die lokale Anmeldung an, die eine Verbindung mit dem verknüpften Server herstellen kann. Die lokale Anmeldung kann entweder eine Anmeldung mit SQL Server-Authentifizierung oder eine Windows-Authentifizierungsanmeldung sein. Verwenden Sie diese Liste, um die Verbindung auf bestimmte Anmeldungen zu beschränken oder einigen Anmeldungen die Verbindung als andere Anmeldung zu ermöglichen.Vortäuschen
Übergeben Sie den Benutzernamen und das Kennwort aus der lokalen Anmeldung an den verknüpften Server. Für die SQL Server-Authentifizierung muss eine Anmeldung mit demselben Namen und Kennwort auf dem Remoteserver vorhanden sein. Bei Windows-Anmeldungen muss die Anmeldung ein gültiger Anmeldename auf dem verknüpften Server sein.Zur Verwendung von Impersonation muss die Konfiguration die Anforderungen für die Delegierung erfüllen.
Remotebenutzer
Verwenden Sie den Remotebenutzer, um Benutzer zuzuordnen, die nicht in der lokalen Anmeldung definiert sind. Der Remotebenutzer muss ein SQL Server-Authentifizierungskonto auf dem Remoteserver sein.Remotekennwort
Geben Sie das Kennwort des Remotebenutzers an.Add (Hinzufügen)
Fügen Sie eine neue lokale Anmeldung hinzu.Entfernen
Entfernen Sie eine vorhandene lokale Anmeldung.Nicht erstellt werden
Geben Sie an, dass keine Verbindung für Anmeldungen hergestellt wird, die in der Liste nicht definiert sind.Ohne Verwendung eines Sicherheitskontexts erstellt werden
Geben Sie an, dass eine Verbindung hergestellt wird, ohne einen Sicherheitskontext für Anmeldungen zu verwenden, die in der Liste nicht definiert sind.Mithilfe des aktuellen Sicherheitskontexts der Anmeldung vornehmen
Geben Sie an, dass eine Verbindung mithilfe des aktuellen Sicherheitskontexts der Anmeldung für Anmeldungen erfolgt, 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, wird der Anmeldename und das Kennwort verwendet, um eine Verbindung mit dem Remoteserver herzustellen. In diesem Fall muss eine Anmeldung mit demselben Namen und Kennwort auf dem Remoteserver vorhanden sein.Mit diesem Sicherheitskontext durchführen lassen.
Geben Sie an, dass eine Verbindung mit der in den Feldern Remoteanmeldung und Mit Kennwort angegebenen Anmeldung und Passwort für Anmeldungen hergestellt wird, die nicht in der Liste definiert sind. Die Remoteanmeldung muss eine SQL Server-Authentifizierungsanmeldung auf dem Remoteserver sein.Klicken Sie optional auf die Seite "Serveroptionen ", um Serveroptionen anzuzeigen oder anzugeben.
Kollationskompatibel
Wirkt sich auf die Ausführung verteilter Abfragen für verknüpfte Server aus. Wenn diese Option auf "true" festgelegt ist, geht SQL Server davon aus, dass alle Zeichen auf dem verknüpften Server mit dem lokalen Server kompatibel sind, in Bezug auf Zeichensatz und Sortierreihenfolge (oder Sortierreihenfolge). Dadurch kann SQL Server Vergleiche in Zeichenspalten an den Anbieter senden. Wenn diese Option nicht festgelegt ist, wertet SQL Server immer Vergleiche für Zeichenspalten lokal aus.Diese Option sollte nur festgelegt werden, wenn sie sicher ist, dass die Datenquelle, die dem verknüpften Server entspricht, dieselbe Zeichensatz- und Sortierreihenfolge wie der lokale Server aufweist.
Datenzugriff
Aktiviert und deaktiviert einen verknüpften Server für den verteilten Abfragezugriff.RPC-
Aktiviert RPC vom angegebenen Server.RPC-Ausgabe
Aktiviert RPC auf den angegebenen Server.Remote-Kollation verwenden
Bestimmt, ob die Kollation einer Remotespalte oder eines lokalen Servers verwendet wird.Wenn wahr, wird die Sortierung von Remotespalten für SQL Server-Datenquellen verwendet, und die im Sortierungsnamen angegebene Sortierung wird für Nicht-SQL Server-Datenquellen 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 Standardwert ist "false".
Sortierungsname
Gibt den Namen der Sortierung an, die von der Remotedatenquelle verwendet wird, wenn die Remotesortierung verwendet wird, wahr ist und die Datenquelle keine SQL Server-Datenquelle ist. Der Name muss eine der von SQL Server unterstützten Kollationen sein.Verwenden Sie diese Option beim Zugriff auf eine andere OLE DB-Datenquelle als SQL Server, deren Sortierung mit einer der SQL Server-Sortierungen übereinstimmt.
Der verknüpfte Server muss eine einzelne Sortierung unterstützen, die für alle Spalten in diesem Server verwendet werden soll. Legen Sie diese Option nicht fest, wenn der verknüpfte Server mehrere Sortierungen innerhalb einer einzelnen Datenquelle unterstützt oder wenn die Sortierung des verknüpften Servers nicht für eine der SQL Server-Sortierungen bestimmt werden kann.
Verbindungstimeout
Timeout-Wert in Sekunden für die Verbindung zu einem verknüpften Server.Wenn 0, verwenden Sie den Standardwert der Option Remote-Login-Timeout aus sp_configure.
Abfragezeitüberschreitung
Timeoutwert in Sekunden für Abfragen gegen einen verknüpften Server.Wenn 0, verwenden Sie den standardmäßigen sp_configureStandardwert für den Timeout bei Remoteabfragen.
Aktivieren der Förderung verteilter Transaktionen
Verwenden Sie diese Option, um die Aktionen einer Server-zu-Server-Prozedur über eine Microsoft Distributed Transaction Coordinator (MS DTC)-Transaktion zu schützen. Wenn diese Option WAHR ist, startet das Aufrufen einer remote gespeicherten Prozedur eine verteilte Transaktion und führt die Transaktion mit MS DTC auf. Weitere Informationen finden Sie unter sp_serveroption (Transact-SQL).Klicke auf OK.
Die Anbieteroptionen anzeigen
Klicken Sie auf die Seite "Anbieteroptionen ", um die optionen anzuzeigen, die der Anbieter zur Verfügung stellt.
Alle Anbieter verfügen nicht über die gleichen Optionen. Beispielsweise sind für einige Datentypen Indizes verfügbar, und für andere möglicherweise nicht. Verwenden Sie dieses Dialogfeld, um SQL Server dabei zu helfen, die Funktionen des Anbieters zu verstehen. SQL Server installiert einige gängige Datenanbieter, aber wenn das Produkt die Datenänderungen bereitstellt, unterstützt der von SQL Server installierte Anbieter möglicherweise nicht alle neuesten Features. Die beste Informationsquelle für die Funktionen des Produkts, das die Daten bereitstellt, ist die Dokumentation für dieses Produkt.
Dynamischer Parameter
Gibt an, dass der Anbieter die Syntax mit dem '?' als Parametermarker 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. Wenn Sie diese Option festlegen, kann SQL Server parametrisierte Abfragen für den Anbieter ausführen. Die Möglichkeit, parametrisierte Abfragen für den Anbieter auszuführen, kann zu einer besseren Leistung für bestimmte Abfragen führen.Geschachtelte Abfragen
Gibt an, dass der Anbieter geschachtelteSELECTAnweisungen in der FROM-Klausel zulässt. Wenn Sie diese Option festlegen, kann SQL Server bestimmte Abfragen an den Anbieter delegieren, bei denen SELECT-Anweisungen in der FROM-Klausel geschachtelt werden können.Nur Ebene Null
Nur OLE DB-Schnittstellen der Ebene 0 werden für den Anbieter aufgerufen.Inprocess zulassen
SQL Server ermöglicht es dem Anbieter, als In-Process-Server instanziiert zu werden. Wenn diese Option nicht festgelegt ist, besteht das Standardverhalten darin, den Anbieter außerhalb des SQL Server-Prozesses zu instanziieren. Das Instanziieren des Anbieters außerhalb des SQL Server-Prozesses schützt den SQL Server-Prozess vor Fehlern im Anbieter. Wenn der Anbieter außerhalb des SQL-Server-Prozesses instanziiert wird, sind Aktualisierungen oder Einfügungen, die auf lange Spalten (text,ntextoderimage) verweisen, nicht zulässig.Nicht durchgeführte Updates
SQL Server ermöglicht Updates, auch wenn ITransactionLocal nicht verfügbar ist. Wenn diese Option aktiviert ist, können Updates für den Anbieter nicht wiederhergestellt werden, da der Anbieter Transaktionen nicht unterstützt.Index als Zugriffspfad
SQL Server versucht, Indizes des Anbieters zum Abrufen von Daten zu verwenden. Standardmäßig werden Indizes nur für Metadaten verwendet und nie geöffnetAd-hoc-Zugriff nicht zulassen
SQL Server lässt keinen Ad-hoc-Zugriff über die OPENROWSET- und OPENDATASOURCE-Funktionen gegenüber dem OLE DB-Anbieter zu. Wenn diese Option nicht festgelegt ist, lässt SQL Server auch keinen Ad-hoc-Zugriff zu.Unterstützt den 'LIKE'-Operator
Gibt an, dass der Anbieter Abfragen mithilfe des LIKE-Schlüsselworts unterstützt.
Verwenden von Transact-SQL
Verwenden Sie zum Erstellen eines verknüpften Servers mithilfe von Transact-SQL die Anweisungen sp_addlinkedserver (Transact-SQL)CREATE LOGIN (Transact-SQL) und sp_addlinkedsrvlogin (Transact-SQL) an.
So erstellen Sie einen verknüpften Server mit einer anderen SQL Server-Instanz mithilfe von Transact-SQL
Geben Sie im Abfrage-Editor den folgenden Transact-SQL Befehl ein, um eine Verknüpfung mit einer Instanz von SQL Server zu
SRVR002\ACCTGerstellen:USE [master] GO EXEC master.dbo.sp_addlinkedserver @server = N'SRVR002\ACCTG', @srvproduct=N'SQL Server' ; GOFühren Sie den folgenden Code aus, um den verknüpften Server so zu konfigurieren, dass die Domänenanmeldeinformationen der Anmeldung verwendet werden, die den verknüpften Server verwendet.
EXEC 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
So testen Sie den verknüpften Server
Führen Sie den folgenden Code aus, um die Verbindung mit dem verknüpften Server zu testen. In diesem Beispiel werden die Namen der Datenbanken auf dem verknüpften Server zurückgegeben.
SELECT name FROM [SRVR002\ACCTG].master.sys.databases ; GO
Schreiben einer Abfrage, die Tabellen von einem verknüpften Server verknüpft
Verwenden Sie vierteilige Namen, um auf ein Objekt auf einem verknüpften Server zu verweisen. Führen Sie den folgenden Code aus, um eine Liste aller Anmeldungen auf dem lokalen Server und deren übereinstimmende Anmeldungen auf dem verknüpften Server 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 ; GOWenn NULL für die verknüpfte Serveranmeldung zurückgegeben wird, gibt sie an, dass die Anmeldung auf dem verknüpften Server nicht vorhanden ist. Diese Anmeldungen können den verknüpften Server nicht verwenden, es sei denn, der verknüpfte Server ist so konfiguriert, dass ein anderer Sicherheitskontext übergeben wird oder der verknüpfte Server anonyme Verbindungen akzeptiert.
Siehe auch
Verbindungsserver (Datenbank-Engine)
sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL)