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

S’APPLIQUE À : OuiSQL Server NonAzure SQL Database NonAzure Synapse Analytics (SQL DW) NonParallel Data Warehouse APPLIES TO: YesSQL Server NoAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

Crée ou met à jour un mappage entre une connexion sur l'instance locale de SQL ServerSQL Server et un compte de sécurité sur un serveur distant.Creates or updates a mapping between a login on the local instance of SQL ServerSQL Server and a security account on a remote server.

Icône du lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

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

ArgumentsArguments

[ @rmtsrvname = ] 'rmtsrvname'
Nom d'un serveur lié auquel s'applique le mappage de la connexion.Is the name of a linked server that the login mapping applies to. rmtsrvname est de type sysname, sans valeur par défaut.rmtsrvname is sysname, with no default.

[ @useself = ] { 'TRUE' | 'FALSE' | NULL }'
Détermine s’il faut se connecter à rmtsrvname en empruntant l’identité des connexions locales ou en soumettant explicitement une connexion et un mot de passe.Determines whether to connect to rmtsrvname by impersonating local logins or explicitly submitting a login and password. Le type de données est varchar ( 8 ), avec true comme valeur par défaut.The data type is varchar( 8 ), with a default of TRUE.

La valeur TRUE spécifie que les connexions utilisent leurs propres informations d’identification pour se connecter à rmtsrvname, avec les arguments rmtuser et rmtpassword ignorés.A value of TRUE specifies that logins use their own credentials to connect to rmtsrvname, with the rmtuser and rmtpassword arguments being ignored. FALSe spécifie que les arguments rmtuser et rmtpassword sont utilisés pour se connecter à rmtsrvname pour la connexion locale localespécifiée.FALSE specifies that the rmtuser and rmtpassword arguments are used to connect to rmtsrvname for the specified locallogin. Si rmtuser et rmtpassword ont également la valeur null, aucune connexion ou aucun mot de passe n’est utilisé pour se connecter au serveur lié.If rmtuser and rmtpassword are also set to NULL, no login or password is used to connect to the linked server.

[ @locallogin = ] 'locallogin'
Connexion sur le serveur local.Is a login on the local server. LocalLogin est de type sysname, avec NULL comme valeur par défaut.locallogin is sysname, with a default of NULL. La valeur NULL indique que cette entrée s’applique à toutes les connexions locales qui se connectent à rmtsrvname.NULL specifies that this entry applies to all local logins that connect to rmtsrvname. Si la valeur n' ** est pas null, SQL ServerSQL Server la connexion locale peut être une connexion ou une connexion Windows.If not NULL, locallogin can be a SQL ServerSQL Server login or a Windows login. La connexion Windows doit être autorisée à accéder à SQL ServerSQL Server directement ou par l'intermédiaire de son appartenance à un groupe Windows qui a une autorisation d'accès.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'
Connexion distante utilisée pour se connecter ** à rmtsrvname @useself lorsque la valeur de est false.Is the remote login used to connect to rmtsrvname when @useself is FALSE. Lorsque le serveur distant est une instance de SQL ServerSQL Server qui n’utilise pas l’authentification Windows, rmtuser est SQL ServerSQL Server une connexion.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 est de type sysname, avec NULL comme valeur par défaut.rmtuser is sysname, with a default of NULL.

[ @rmtpassword = ] 'rmtpassword'
Mot de passe associé à rmtuser.Is the password associated with rmtuser. rmtpassword est de type sysname, avec NULL comme valeur par défaut.rmtpassword is sysname, with a default of NULL.

Codet de retourReturn Code Values

0 (réussite) ou 1 (échec)0 (success) or 1 (failure)

NotesRemarks

Lorsqu'un utilisateur accède au serveur local et exécute une requête distribuée qui interroge une table sur le serveur lié, le serveur local doit se connecter au serveur lié à la place de l'utilisateur pour accéder à cette table.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. Utilisez sp_addlinkedsrvlogin pour spécifier les informations d'identification que le serveur local utilise pour se connecter au serveur lié.Use sp_addlinkedsrvlogin to specify the login credentials that the local server uses to log on to the linked server.

Notes

Pour créer les meilleurs plans de requête lorsque vous utilisez une table sur un serveur lié, le processeur de requêtes doit recevoir des statistiques de distribution de données du serveur lié.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. Les utilisateurs qui ont des autorisations limitées sur des colonnes de la table peuvent ne pas avoir d'autorisations suffisantes pour obtenir toutes les statistiques utiles, peuvent recevoir un plan de requête moins efficace et être confrontés à des performances médiocres.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. Si le serveur lié constitue une instance de SQL ServerSQL Server, afin d'obtenir toutes les statistiques disponibles, l'utilisateur doit posséder la table ou être membre du rôle serveur fixe sysadmin, du rôle de base de données fixe db_owner ou du rôle de base de données fixe db_ddladmin sur le serveur lié.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. SQL Server 2012 SP1 modifie les restrictions d'autorisation pour obtenir des statistiques et autorise les utilisateurs disposant de l'autorisation SELECT à accéder aux statistiques disponibles via DBCC SHOW_STATISTICS.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. Pour plus d’informations, consultez la section autorisations de DBCC SHOW_STATISTICS ()Transact-SQL .For more information, see the Permissions section of DBCC SHOW_STATISTICS (Transact-SQL).

Un mappage par défaut est créé automatiquement entre toutes les connexions sur le serveur local et les connexions distantes sur le serveur lié, par l'exécution de la procédure sp_addlinkedserver.A default mapping between all logins on the local server and remote logins on the linked server is automatically created by executing sp_addlinkedserver. Le mappage par défaut indique que SQL ServerSQL Server utilise les informations d'identification de la connexion locale lors de la connexion au serveur lié.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. Cela équivaut à exécuter sp_addlinkedsrvlogin avec @useself défini sur true pour le serveur lié, sans spécifier de nom d’utilisateur local.This is equivalent to executing sp_addlinkedsrvlogin with @useself set to true for the linked server, without specifying a local user name. Utilisez la procédure sp_addlinkedsrvlogin uniquement pour modifier le mappage par défaut ou ajouter de nouveaux mappages pour des connexions locales spécifiques.Use sp_addlinkedsrvlogin only to change the default mapping or to add new mappings for specific local logins. Pour supprimer le mappage par défaut ou tout autre mappage, utilisez la procédure sp_droplinkedsrvlogin.To delete the default mapping or any other mapping, use sp_droplinkedsrvlogin.

Au lieu d'utiliser la procédure sp_addlinkedsrvlogin pour créer un mappage de connexion d'accès prédéterminé, SQL ServerSQL Server peut utiliser automatiquement les informations d'identification sécurisées Windows (nom et mot de passe de connexion Windows) d'un utilisateur qui émet une requête pour se connecter à un serveur lié dans les conditions suivantes :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:

  • L'utilisateur est connecté à SQL ServerSQL Server en utilisant le mode d'authentification Windows.A user is connected to SQL ServerSQL Server by using Windows Authentication Mode.

  • La délégation de compte de sécurité est disponible sur le client et le serveur demandeur.Security account delegation is available on the client and sending server.

  • Le fournisseur prend en charge le mode d'authentification Windows (par exemple, SQL ServerSQL Server sous Windows).The provider supports Windows Authentication Mode; for example, SQL ServerSQL Server running on Windows.

Notes

Il n'est pas nécessaire que la délégation soit activée pour les scénarios avec un seul saut. Elle est indispensable pour les scénarios avec plusieurs sauts.Delegation does not have to be enabled for single-hop scenarios, but it is required for multiple-hop scenarios.

Lorsque l'authentification est effectuée par le serveur lié à l'aide des mappages définis par l'exécution de la procédure sp_addlinkedsrvlogin sur l'instance locale de SQL ServerSQL Server, les autorisations propres à chaque objet dans la base de données distante sont déterminées par le serveur lié et non par le serveur local.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.

La procédure sp_addlinkedsrvlogin ne peut pas être exécutée dans une transaction définie par l'utilisateur.sp_addlinkedsrvlogin cannot be executed from within a user-defined transaction.

AutorisationsPermissions

Nécessite l'autorisation ALTER ANY LOGIN sur le serveur.Requires ALTER ANY LOGIN permission on the server.

ExemplesExamples

R.A. Établissement des connexions locales au serveur lié avec leurs propres informations d'identification.Connecting all local logins to the linked server by using their own user credentials

Le code exemple suivant crée un mappage pour que toutes les connexions au serveur local soient établies via le serveur lié Accounts avec leurs propres informations d'identification.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';  

ouOr

EXEC sp_addlinkedsrvlogin 'Accounts', 'true';  

Notes

Si des mappages explicites sont créés pour des connexions individuelles, ils sont prioritaires sur les mappages globaux qui peuvent exister pour ce serveur lié.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. Établissement d'une connexion spécifique au serveur lié en utilisant d'autres informations d'identification.Connecting a specific login to the linked server by using different user credentials

Le code exemple suivant crée un mappage pour que l'utilisateur Windows Domain\Mary se connecte au serveur lié Accounts en utilisant le nom de connexion MaryP et le mot de passe d89q3w4u.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';  

Important

Cet exemple n'utilise pas l'authentification Windows.This example does not use Windows Authentication. Les mots de passe sont transmis sans être chiffrés.Passwords will be transmitted unencrypted. Les mots de passe peuvent être visibles dans les définitions des sources de données et les scripts enregistrés sur disque, dans les sauvegardes et dans les fichiers journaux.Passwords may be visible in data source definitions and scripts that are saved to disk, in backups, and in log files. N'utilisez jamais le mot de passe d'un administrateur pour ce type de connexion.Never use an administrator password in this kind of connection. Consultez votre administrateur réseau pour des conseils de sécurité propres à votre environnement.Consult your network administrator for security guidance specific to your environment.

Voir aussiSee Also

Affichages catalogue des serveurs liés (Transact-SQL) Linked Servers Catalog Views (Transact-SQL)
sp_addlinkedserver (Transact-SQL) sp_addlinkedserver (Transact-SQL)
sp_droplinkedsrvlogin (Transact-SQL) sp_droplinkedsrvlogin (Transact-SQL)
Procédures stockées système (Transact-SQL)System Stored Procedures (Transact-SQL)