sp_addlinkedsrvlogin (Transact-SQL)sp_addlinkedsrvlogin (Transact-SQL)

Gilt für: JaSQL Server NeinAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Erstellt oder aktualisiert eine Zuordnung zwischen einem Anmeldenamen in der lokalen Instanz von SQL ServerSQL Server und einem Sicherheitskonto auf einem Remoteserver.Creates or updates a mapping between a login on the local instance of SQL ServerSQL Server and a security account on a remote server.

Themenlinksymbol Transact-SQL Syntax Conventions (Transact-SQL-Syntaxkonventionen)Topic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

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

ArgumenteArguments

[ @rmtsrvname = ] 'rmtsrvname'
Der Name eines Verbindungsservers, für den die Anmeldenamenzuordnung gilt.Is the name of a linked server that the login mapping applies to. Rmtsrvname ist Sysname, hat keinen Standardwert.rmtsrvname is sysname, with no default.

[ @useself = ] { 'TRUE' | 'FALSE' | NULL }'
Bestimmt, ob für die Verbindung Rmtsrvname Identität lokaler Anmeldenamen angenommen oder explizit Übermitteln von Anmeldenamen und ein Kennwort.Determines whether to connect to rmtsrvname by impersonating local logins or explicitly submitting a login and password. Der Datentyp Varchar ( 8 ) , hat den Standardwert "true".The data type is varchar( 8 ), with a default of TRUE.

Der Wert TRUE gibt an, dass Anmeldungen ihre eigenen Anmeldeinformationen verwenden, um das Herstellen einer Verbindung mit Rmtsrvname, mit der Rmtuser und Rmtpassword Argumente ignoriert wird.A value of 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 Rmtuser und Rmtpassword Argumente werden verwendet, um das Herstellen einer Verbindung mit Rmtsrvname für den angegebenen Locallogin .FALSE specifies that the rmtuser and rmtpassword arguments are used to connect to rmtsrvname for the specified locallogin. Wenn Rmtuser und Rmtpassword sind auch auf NULL, kein Benutzername oder Kennwort wird für die Verbindung mit dem Verbindungsserver verwendet.If rmtuser and rmtpassword are also set to NULL, no login or password is used to connect to the linked server.

[ @locallogin = ] 'locallogin'
Ein Anmeldename auf dem lokalen Server.Is a login on the local server. Locallogin ist Sysname, hat den Standardwert NULL.locallogin is sysname, with a default of NULL. NULL gibt an, dass dieser Eintrag für alle lokalen Anmeldenamen gilt, die Verbindung mit Rmtsrvname.NULL specifies that this entry applies to all local logins that connect to rmtsrvname. Falls ungleich NULL, Locallogin kann eine SQL ServerSQL Server -Anmeldename oder ein Windows-Anmeldename.If not NULL, locallogin can be a SQL ServerSQL Server login or a Windows login. Dem Windows-Anmeldenamen muss das Recht zum Zugreifen auf SQL ServerSQL Server erteilt worden sein. Dies kann entweder direkt oder über die Mitgliedschaft in einer Windows-Gruppe erfolgen, der das Zugriffsrecht erteilt wurde.The Windows login must have been granted access to SQL ServerSQL Server either directly, or through its membership in a Windows group granted access.

[ @rmtuser = ] 'rmtuser'
Der remoteanmeldename für die Verbindung Rmtsrvname beim @useself ist "false".Is the remote login used to connect to rmtsrvname when @useself is FALSE. Wenn der Remoteserver ist eine Instanz von SQL ServerSQL Server verwendet, die keine Windows-Authentifizierung, Rmtuser ist eine SQL ServerSQL Server Anmeldung.When the remote server is an instance of SQL ServerSQL Server that does not use Windows Authentication, rmtuser is a SQL ServerSQL Server login. Rmtuser ist Sysname, hat den Standardwert NULL.rmtuser is sysname, with a default of NULL.

[ @rmtpassword = ] 'rmtpassword'
Das Kennwort zugeordnet ist Rmtuser.Is the password associated with rmtuser. Rmtpassword ist Sysname, hat den Standardwert NULL.rmtpassword is sysname, with a default of NULL.

RückgabecodewerteReturn Code Values

0 (Erfolg) oder 1 (Fehler)0 (success) or 1 (failure)

HinweiseRemarks

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.When a user logs on to the local server and executes a distributed query that accesses a table on the linked server, the local server must log on to the linked server on behalf of the user to access that table. Geben Sie mithilfe von sp_addlinkedsrvlogin die Anmeldeinformationen an, die der lokale Server zum Anmelden beim Verbindungsserver verwendet.Use sp_addlinkedsrvlogin to specify the login credentials that the local server uses to log on to the linked server.

Hinweis

Um bei Verwendung einer Tabelle auf einem Verbindungsserver die besten Abfragepläne zu erstellen, muss der Abfrageprozessor Datenverteilungsstatistiken vom Verbindungsserver aufweisen.To create the best query plans when you are using a table on a linked server, the query processor must have data distribution statistics from the linked server. 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.Users that have limited permissions on any columns of the table might not have sufficient permissions to obtain all the useful statistics, and might receive a less efficient query plan and experience poor performance. Zum Anzeigen aller verfügbaren Statistiken muss der Benutzer Besitzer der Tabelle oder Mitglied der festen Serverrolle sysadmin, der festen Datenbankrolle db_owner oder der festen Datenbankrolle db_ddladmin auf dem Verbindungsserver sein, wenn der Verbindungsserver eine Instanz von SQL ServerSQL Server ist.If the linked server is an instance of SQL ServerSQL Server, to obtain all available statistics, the user must own the table or be a member of the sysadmin fixed server role, the db_owner fixed database role, or the db_ddladmin fixed database role on the linked 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.SQL Server 2012 SP1 modifies the permission restrictions for obtaining statistics and allows users with SELECT permission to access statistics available through DBCC SHOW_STATISTICS. 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).

Eine Standardzuordnung zwischen allen Anmeldenamen auf dem lokalen Server und Remoteanmeldenamen auf dem Verbindungsserver wird durch Ausführen von sp_addlinkedserver automatisch erstellt.A default mapping between all logins on the local server and remote logins on the linked server is automatically created by executing sp_addlinkedserver. Die Standardzuordnung legt fest, dass SQL ServerSQL Server die Anmeldeinformationen der lokalen Anmeldung für den Zugriff auf den Verbindungsserver im Auftrag des Anmeldenamens verwendet.The default mapping states that SQL ServerSQL Server uses the user credentials of the local login when connecting to the linked server on behalf of the login. Dies entspricht dem Ausführen von Sp_addlinkedsrvlogin mit @useself festgelegt "true" für den Verbindungsserver, ohne dass ein lokaler Benutzername angegeben.This is equivalent to executing sp_addlinkedsrvlogin with @useself set to true for the linked server, without specifying a local user name. Verwenden Sie sp_addlinkedsrvlogin nur, um die Standardzuordnung zu ändern oder um neue Zuordnungen für bestimmte lokale Anmeldenamen hinzuzufügen.Use sp_addlinkedsrvlogin only to change the default mapping or to add new mappings for specific local logins. Mithilfe von sp_droplinkedsrvlogin löschen Sie die Standardzuordnung oder eine beliebige andere Zuordnung.To delete the default mapping or any other mapping, use sp_droplinkedsrvlogin.

Anstatt mit sp_addlinkedsrvlogin eine vordefinierte Anmeldenamenzuordnung erstellen zu müssen, kann SQL ServerSQL Server automatisch die Windows-Anmeldeinformationen für die Sicherheit (Windows-Anmeldename und -Kennwort) eines Benutzers verwenden, der die Abfrage für den Zugriff auf einen Verbindungsserver ausgibt. Dazu müssen die folgenden Bedingungen erfüllt sein:Instead of having to use sp_addlinkedsrvlogin to create a predetermined login mapping, SQL ServerSQL Server can automatically use the Windows security credentials (Windows login name and password) of a user issuing the query to connect to a linked server when all the following conditions exist:

  • Ein Benutzer ist mithilfe des Windows-Authentifizierungsmodus mit SQL ServerSQL Server verbunden.A user is connected to SQL ServerSQL Server by using Windows Authentication Mode.

  • Die Sicherheitskontendelegierung ist auf dem Client und dem sendenden Server verfügbar.Security account delegation is available on the client and sending server.

  • Der Anbieter unterstützt den Windows-Authentifizierungsmodus (z. B. SQL ServerSQL Server unter Windows).The provider supports Windows Authentication Mode; for example, SQL ServerSQL Server running on Windows.

Hinweis

Die Delegierung muss für Szenarien mit einem einzigen Hop nicht aktiviert werden, bei mehreren Hops ist dies jedoch erforderlich.Delegation does not have to be enabled for single-hop scenarios, but it is required for multiple-hop scenarios.

Nachdem die Authentifizierung durch den Verbindungsserver mit den Zuordnungen erfolgt ist, die durch Ausführen von sp_addlinkedsrvlogin auf der lokalen Instanz von SQL ServerSQL Server definiert wurden, werden die Berechtigungen für die einzelnen Objekte in der Remotedatenbank nicht durch den lokalen Server, sondern durch den Verbindungsserver bestimmt.After the authentication has been performed by the linked server by using the mappings that are defined by executing sp_addlinkedsrvlogin on the local instance of SQL ServerSQL Server, the permissions on individual objects in the remote database are determined by the linked server, not the local server.

sp_addlinkedsrvlogin kann nicht innerhalb einer benutzerdefinierten Transaktion ausgeführt werden.sp_addlinkedsrvlogin cannot be executed from within a user-defined transaction.

BerechtigungenPermissions

Erfordert die ALTER ANY LOGIN-Berechtigung auf dem Server.Requires ALTER ANY LOGIN permission on the server.

BeispieleExamples

A.A. Verbinden aller lokalen Anmeldenamen mit dem Verbindungsserver mithilfe ihrer eigenen AnmeldeinformationenConnecting all local logins to the linked server by using their own user credentials

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.The following example creates a mapping to make sure that all logins to the local server connect through to the linked server Accounts by using their own user credentials.

EXEC sp_addlinkedsrvlogin 'Accounts';  

oderOr

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.If there are explicit mappings created for individual logins, they take precedence over any global mappings that may exist for that linked server.

B.B. Verbinden eines bestimmten Anmeldenamens mit dem Verbindungsserver mithilfe anderer AnmeldeinformationenConnecting a specific login to the linked server by using different user credentials

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.The following example creates a mapping to make sure that the Windows user Domain\Mary connects through to the linked server Accounts by using the login MaryP and password d89q3w4u.

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

Wichtig

Für dieses Beispiel wird nicht die Windows-Authentifizierung verwendet.This example does not use Windows Authentication. Kennwörter werden unverschlüsselt übertragen.Passwords will be transmitted unencrypted. Kennwörter sind möglicherweise in Datenquellendefinitionen und Skripts, die gespeichert werden auf dem Datenträger, die in Sicherungen und in Protokolldateien.Passwords may be visible in data source definitions and scripts that are saved to disk, in backups, and in log files. Verwenden Sie für diese Art von Verbindung auf keinen Fall ein Administratorkennwort.Never use an administrator password in this kind of connection. Wenden Sie sich wegen Sicherheitshinweisen speziell für Ihre Umgebung an Ihren Netzwerkadministrator.Consult your network administrator for security guidance specific to your environment.

Siehe auchSee Also

Verbindungsserver-Katalogsichten (Transact-SQL) Linked Servers Catalog Views (Transact-SQL)
sp_addlinkedserver (Transact-SQL) sp_addlinkedserver (Transact-SQL)
sp_droplinkedsrvlogin (Transact-SQL) sp_droplinkedsrvlogin (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)System Stored Procedures (Transact-SQL)