sp_addlinkedsrvlogin (Transact-SQL)

Gilt für:SQL Server

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

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @rmtsrvname = ] 'rmtsrvname'
Der Name eines Verbindungsservers, für den die Anmeldezuordnung gilt. rmtsrvname ist sysname ohne Standardwert.

[ @useself = ] { 'TRUE' | 'FALSE' | NULL }'
Bestimmt, ob eine Verbindung mit rmtsrvname hergestellt werden soll, indem die Identität lokaler Anmeldungen angenommen oder explizit ein Anmelde- und Kennwort übermittelt wird. Der Datentyp ist varchar(8) mit dem Standardwert TRUE.

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

[ @locallogin = ] 'locallogin'
Ein Anmeldename auf dem lokalen Server. locallogin ist sysname mit dem Standardwert 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. Der Windows-Anmeldung muss Zugriff auf SQL Server entweder direkt oder über die Mitgliedschaft in einer Windows-Gruppe gewährt worden sein, die Zugriff gewährt hat.

[ @rmtuser = ] 'rmtuser'
Die Remoteanmeldung, die zum Herstellen einer Verbindung mit rmtsrvname verwendet wird, wenn @useself false ist. Wenn der Remoteserver eine Instanz von SQL Server ist, die keine Windows-Authentifizierung verwendet, ist rmtuser ein SQL Server Anmeldung. rmtuser ist sysname mit dem Standardwert NULL.

[ @rmtpassword = ] 'rmtpassword'
Ist das Kennwort, das rmtuser zugeordnet ist. rmtpassword ist sysname mit dem Standardwert 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 der Verbindungsserver eine Instanz von SQL Server ist, muss der Benutzer zum Abrufen aller verfügbaren Statistiken die Tabelle besitzen oder Mitglied der festen Serverrolle sysadmin, der festen Datenbankrolle db_owner oder der db_ddladmin festen Datenbankrolle auf dem Verbindungsserver sein. 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 besagt, dass SQL Server die Benutzeranmeldeinformationen der lokalen Anmeldung verwendet, wenn sie im Namen der Anmeldung eine Verbindung mit dem Verbindungsserver herstellen. Dies entspricht dem Ausführen sp_addlinkedsrvlogin, bei @useself dem für den Verbindungsserver auf true festgelegt ist, 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 verwenden zu müssen, um eine vordefinierte Anmeldezuordnung zu erstellen, können SQL Server automatisch die Windows-Sicherheitsanmeldeinformationen (Windows-Anmeldename und -Kennwort) eines Benutzers verwenden, der die Abfrage ausgibt, um eine Verbindung mit einem Verbindungsserver herzustellen, wenn alle folgenden Bedingungen vorliegen:

  • 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. beispielsweise SQL Server unter Windows ausgeführt werden.

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 Verbindungsserver mithilfe der Zuordnungen durchgeführt wurde, die durch ausführen sp_addlinkedsrvlogin auf der lokalen Instanz von SQL Server definiert werden, werden die Berechtigungen für einzelne Objekte in der Remotedatenbank vom Verbindungsserver und 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)