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 = ] N'rmtsrvname'
    [ , [ @useself = ] 'useself' ]
    [ , [ @locallogin = ] N'locallogin' ]
    [ , [ @rmtuser = ] N'rmtuser' ]
    [ , [ @rmtpassword = ] N'rmtpassword' ]
[ ; ]

Argumente

[ @rmtsrvname = ] N'rmtsrvname'

Der Name eines verknüpften Servers, auf den die Anmeldezuordnung angewendet wird. @rmtsrvname ist "sysname" ohne Standard.

[ @useself = ] 'useself'

Bestimmt, ob eine Verbindung mit rmtsrvname hergestellt werden soll, indem lokale Anmeldungen angenommen oder explizit eine Anmeldung und ein Kennwort übermittelt werden. @useself ist varchar(8) mit einem Standardwert von true.

  • Ein Wert von true specifies that logins use their own credentials to connect to @rmtsrvname, with the @rmtuser and @rmtpassword arguments being ignored.
  • false Gibt an, dass die Argumente @rmtuser und @rmtpassword verwendet werden, um eine Verbindung mit @rmtsrvname für die angegebene @locallogin herzustellen.

Wenn @rmtuser und @rmtpassword festgelegt NULLsind, wird keine Anmeldung oder kein Kennwort verwendet, um eine Verbindung mit dem verknüpften Server herzustellen.

[ @locallogin = ] N'locallogin'

Eine Anmeldung 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. Andernfalls NULLkann @locallogin eine SQL Server-Anmeldung oder ein Windows-Konto sein. Das Windows-Konto muss direkt oder über die Mitgliedschaft in einer Windows-Gruppe Zugriff auf SQL Server haben.

[ @rmtuser = ] N'rmtuser'

Die Remoteanmeldung, die zum Herstellen einer Verbindung mit @rmtsrvname verwendet wird, wenn @useself dies der Zeitpunkt ist false. @rmtuser ist "sysname" mit einem Standardwert von NULL. Wenn der Remoteserver eine Instanz von SQL Server ist, die keine Windows-Authentifizierung verwendet, ist @rmtuser eine SQL Server-Anmeldung.

[ @rmtpassword = ] N'rmtpassword'

Das Kennwort, das @rmtuser zugeordnet ist. @rmtpassword ist "sysname" mit der Standardeinstellung "NULL.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler).

Hinweise

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 sp_addlinkedsrvlogin die Anmeldeinformationen an, die der lokale Server zum Anmelden beim verknüpften Server verwendet.

Hinweis

Um die besten Abfragepläne zu erstellen, wenn Sie eine Tabelle auf einem verknüpften Server verwenden, muss der Abfrageprozessor Über Datenverteilungsstatistiken vom verknüpften Server verfügen. 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 verknüpfte Server eine Instanz von SQL Server ist, muss der Benutzer die Tabelle besitzen oder Mitglied der Festen Serverrolle sysadmin , der db_owner festen Datenbankrolle oder der db_ddladmin festen Datenbankrolle auf dem verknüpften Server sein. SQL Server 2012 SP1 (11.0.3x) ändert die Berechtigungseinschränkungen für das Abrufen von Statistiken und ermöglicht Es Benutzern mit SELECT-Berechtigung, auf Statistiken zuzugreifen, die über DBCC-SHOW_STATISTICS verfügbar sind. Weitere Informationen finden Sie im Abschnitt "Berechtigungen" des DBCC-SHOW_STATISTICS (Transact-SQL).For more information, see the Permissions section of DBCC SHOW_STATISTICS (Transact-SQL).

Durch ausführen sp_addlinkedserverwird automatisch eine Standardzuordnung zwischen allen Anmeldungen auf dem lokalen Server und Remoteanmeldungen auf dem verknüpften Server erstellt. Die Standardzuordnung gibt an, dass SQL Server die Benutzeranmeldeinformationen der lokalen Anmeldung verwendet, wenn eine Verbindung mit dem verknüpften Server im Auftrag der Anmeldung hergestellt wird. Dies entspricht der Ausführung sp_addlinkedsrvlogin mit @useself festgelegtem true Wert für den verknüpften Server, ohne einen lokalen Benutzernamen anzugeben. Verwenden Sie diese Einstellung sp_addlinkedsrvlogin nur, um die Standardzuordnung zu ändern oder neue Zuordnungen für bestimmte lokale Anmeldungen hinzuzufügen. Um die Standardzuordnung oder eine andere Zuordnung zu löschen, verwenden Sie sp_droplinkedsrvlogin.

sp_addlinkedsrvlogin Anstatt eine vordefinierte Anmeldezuordnung zu erstellen, kann SQL Server automatisch die Windows-Sicherheitsanmeldeinformationen (Windows-Anmeldename und -kennwort) eines Benutzers verwenden, der die Abfrage ausgibt, 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, der unter Windows ausgeführt wird.

Hinweis

Die Delegierung muss für Szenarien mit nur einem Hop nicht aktiviert werden, ist aber für Szenarien mit mehreren Hops erforderlich.

Nachdem die Authentifizierung vom verknüpften Server mithilfe der Zuordnungen ausgeführt wurde, die durch Ausführen sp_addlinkedsrvlogin der lokalen Instanz von SQL Server definiert werden, werden die Berechtigungen für einzelne Objekte in der Remotedatenbank vom verknüpften Server 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 alle lokalen Anmeldungen am verknüpften Server mithilfe ihrer eigenen Benutzeranmeldeinformationen

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

Wenn für einzelne Anmeldungen explizite Zuordnungen erstellt werden, haben sie Vorrang vor allen globalen Zuordnungen, die für diesen verknüpften Server möglicherweise vorhanden sind.

B. Verbinden einer bestimmten Anmeldung am verknüpften Server mithilfe unterschiedlicher Benutzeranmeldeinformationen

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';

Achtung

In diesem Beispiel wird die Windows-Authentifizierung nicht 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.