sp_addlinkedsrvlogin (Transact-SQL)

Gilt für: SQL Server (alle unterstützten Versionen)

Erstellt oder aktualisiert eine Zuordnung zwischen einer Anmeldung auf der lokalen Instanz von SQL Server und einem Sicherheitskonto auf einem Remoteserver.

ThemenlinksymbolTransact-SQL-Syntaxkonventionen

Syntax

sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname'   
     [ , [ @useself = ] { 'TRUE' | 'FALSE' | NULL } ]   
     [ , [ @locallogin = ] 'locallogin' ]   
     [ , [ @rmtuser = ] 'rmtuser' ]   
     [ , [ @rmtpassword = ] 'rmtpassword' ]   

Argumente

[ @rmtsrvname = ] 'rmtsrvname'
Ist der Name eines verknüpften Servers, auf den die Anmeldezuordnung angewendet wird. rmtsrvname ist sysname, ohne Standard.

[ @useself = ] { 'TRUE' | 'FALSE' | NULL }'
Bestimmt, ob eine Verbindung mit rmtsrvname hergestellt werden soll, indem lokale Anmeldungen imitiert oder explizit ein Anmelde- und Kennwort übermittelt werden. Der Datentyp ist varchar(8) mit einem Standardwert von TRUE.

Ein Wert von TRUE gibt an, dass Anmeldungen ihre eigenen Anmeldeinformationen verwenden, um eine Verbindung mit rmtsrvname herzustellen, wobei die Rmtuser - und rmtpassword-Argumente ignoriert werden. FALSE gibt an, dass die Rmtuser - und rmtpassword-Argumente verwendet werden, um eine Verbindung mit rmtsrvname für das angegebene locallogin herzustellen. Wenn rmtuser und rmtpassword auch auf NULL festgelegt sind, wird keine Anmeldung oder kein Kennwort verwendet, um eine Verbindung mit dem verknüpften Server herzustellen.

[ @locallogin = ] 'locallogin'
Ein Anmeldename auf dem lokalen Server. locallogin ist sysname, mit einem Standardwert von NULL. NULL gibt an, dass dieser Eintrag für alle lokalen Anmeldungen gilt, die eine Verbindung mit rmtsrvname herstellen. Wenn nicht NULL, kann locallogin eine SQL Server Anmeldung oder eine Windows-Anmeldung sein. Die Windows-Anmeldung muss zugriff auf SQL Server entweder direkt oder über seine Mitgliedschaft in einer Windows-Gruppe gewährt worden sein, die Zugriff gewährt hat.

[ @rmtuser = ] 'rmtuser'
Ist die Remoteanmeldung, die verwendet wird, um eine Verbindung mit rmtsrvname herzustellen, wenn @useself "FALSE" lautet. Wenn der Remoteserver eine Instanz von SQL Server ist, die keine Windows-Authentifizierung verwendet, ist rmtuser eine SQL Server Anmeldung. rmtuser ist sysname, mit einem Standardwert von NULL.

[ @rmtpassword = ] 'rmtpassword'
Ist das Kennwort, das rmtuser zugeordnet ist. rmtpassword ist sysname, mit einem Standardwert von NULL.

Rückgabecodewerte

„0“ (erfolgreich) oder „1“ (fehlerhaft)

Bemerkungen

Wenn sich ein Benutzer beim lokalen Server anmeldet und eine verteilte Abfrage ausführt, die auf eine Tabelle auf dem Verbindungsserver zugreift, muss sich der lokale Server beim Verbindungsserver im Auftrag des Benutzers anmelden, um auf diese Tabelle zugreifen zu können. Geben Sie mithilfe von sp_addlinkedsrvlogin die Anmeldeinformationen an, die der lokale Server zum Anmelden beim Verbindungsserver verwendet.

Hinweis

Um bei Verwendung einer Tabelle auf einem Verbindungsserver die besten Abfragepläne zu erstellen, muss der Abfrageprozessor Datenverteilungsstatistiken vom Verbindungsserver aufweisen. Benutzer, die über eingeschränkte Berechtigungen für beliebige Tabellenspalten verfügen, haben möglicherweise nicht die erforderlichen Berechtigungen, um alle nützlichen Statistiken abzurufen. Der Abfrageplan kann daher weniger effizient und die Leistung beeinträchtigt sein. Wenn es sich bei dem verknüpften Server um eine Instanz von SQL Server handelt, muss der Benutzer die Tabelle besitzen oder mitglied der Rolle "sysadmin fixed server" sein, die db_owner rolle für feste Datenbank oder die db_ddladmin feste Datenbankrolle auf dem verknüpften Server. In SQL Server 2012 SP1 wurden die Berechtigungseinschränkungen zum Abrufen von Statistiken geändert. Benutzer mit der SELECT-Berechtigung können auf Statistiken zugreifen, die über DBCC SHOW_STATISTICS verfügbar sind. Weitere Informationen finden Sie im Abschnitt "Berechtigungen" von DBCC SHOW_STATISTICS (Transact-SQL).

Eine Standardzuordnung zwischen allen Anmeldenamen auf dem lokalen Server und Remoteanmeldenamen auf dem Verbindungsserver wird durch Ausführen von sp_addlinkedserver automatisch erstellt. Die Standardzuordnung gibt an, dass SQL Server die Benutzeranmeldeinformationen der lokalen Anmeldung beim Herstellen einer Verbindung mit dem verknüpften Server im Namen der Anmeldung verwendet. Dies entspricht der Ausführung von sp_addlinkedsrvlogin mit @useself " true" für den verknüpften Server, ohne einen lokalen Benutzernamen anzugeben. Verwenden Sie sp_addlinkedsrvlogin nur, um die Standardzuordnung zu ändern oder um neue Zuordnungen für bestimmte lokale Anmeldenamen hinzuzufügen. Mithilfe von sp_droplinkedsrvlogin löschen Sie die Standardzuordnung oder eine beliebige andere Zuordnung.

Anstatt sp_addlinkedsrvlogin zum Erstellen einer vordefinierten Anmeldezuordnung zu verwenden, kann SQL Server die Windows-Sicherheitsanmeldeinformationen (Windows-Anmeldename und Kennwort) eines Benutzers, der die Abfrage ausgibt, automatisch verwenden, um eine Verbindung mit einem verknüpften Server herzustellen, wenn alle folgenden Bedingungen vorhanden sind:

  • Ein Benutzer ist über den Windows-Authentifizierungsmodus mit SQL Server verbunden.

  • Die Sicherheitskontendelegierung ist auf dem Client und dem sendenden Server verfügbar.

  • Der Anbieter unterstützt den Windows-Authentifizierungsmodus; Beispiel: SQL Server unter Windows ausgeführt.

Hinweis

Die Delegierung muss für Szenarien mit einem einzigen Hop nicht aktiviert werden, bei mehreren Hops ist dies jedoch erforderlich.

Nachdem die Authentifizierung vom verknüpften Server mithilfe der Zuordnungen ausgeführt wurde, die durch die Ausführung von sp_addlinkedsrvlogin auf der lokalen Instanz von SQL Server definiert werden, werden die Berechtigungen für einzelne Objekte in der Remotedatenbank vom verknüpften Server, nicht vom lokalen Server bestimmt.

sp_addlinkedsrvlogin kann nicht innerhalb einer benutzerdefinierten Transaktion ausgeführt werden.

Berechtigungen

Erfordert die ALTER ANY LOGIN-Berechtigung auf dem Server.

Beispiele

A. Verbinden aller lokalen Anmeldenamen mit dem Verbindungsserver mithilfe ihrer eigenen Anmeldeinformationen

Das folgende Beispiel erstellt eine Zuordnung, um sicherzustellen, dass bei allen Anmeldungen vom lokalen Server auf den Verbindungsserver Accounts die Anmeldeinformationen des jeweiligen Benutzers verwendet werden.

EXEC sp_addlinkedsrvlogin 'Accounts';  

oder

EXEC sp_addlinkedsrvlogin 'Accounts', 'true';  

Hinweis

Falls für einzelne Anmeldenamen explizite Zuordnungen erstellt werden, haben diese Vorrang vor globalen Zuordnungen, die für diesen Verbindungsserver vorhanden sind.

B. Verbinden eines bestimmten Anmeldenamens mit dem Verbindungsserver mithilfe anderer Anmeldeinformationen

Das folgende Beispiel erstellt eine Zuordnung, um sicherzustellen, dass die Windows-Benutzerin Domain\Mary auf den Verbindungsserver Accounts mit dem Anmeldenamen MaryP und dem Kennwort d89q3w4u zugreifen kann.

EXEC sp_addlinkedsrvlogin 'Accounts', 'false', 'Domain\Mary', 'MaryP', 'd89q3w4u';  

Wichtig

Für dieses Beispiel wird nicht die Windows-Authentifizierung verwendet. Kennwörter werden unverschlüsselt übertragen. Kennwörter sind möglicherweise in Datenquellendefinitionen und Skripts sichtbar, die auf dem Datenträger, in Sicherungen und in Protokolldateien gespeichert werden. Verwenden Sie für diese Art von Verbindung auf keinen Fall ein Administratorkennwort. Wenden Sie sich wegen Sicherheitshinweisen speziell für Ihre Umgebung an Ihren Netzwerkadministrator.

Weitere Informationen

Verbindungsserver-Katalogsichten (Transact-SQL)
sp_addlinkedserver (Transact-SQL)
sp_droplinkedsrvlogin (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)