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

APLICA-SE A: simSQL Server nãoBanco de Dados SQL do Azure nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Cria ou atualiza um mapeamento entre um logon na instância local do SQL ServerSQL Server e uma conta de segurança em um servidor remoto.Creates or updates a mapping between a login on the local instance of SQL ServerSQL Server and a security account on a remote server.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

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

ArgumentosArguments

[ @rmtsrvname = ] 'rmtsrvname'
É o nome do servidor vinculado ao qual o mapeamento de logon se aplica.Is the name of a linked server that the login mapping applies to. rmtsrvname está sysname, sem padrão.rmtsrvname is sysname, with no default.

[ @useself = ] { 'TRUE' | 'FALSE' | NULL }'
Determina se é necessário se conectar ao rmtsrvname pela representação de logons locais ou envio explícito de um logon e senha.Determines whether to connect to rmtsrvname by impersonating local logins or explicitly submitting a login and password. O tipo de dados é varchar ( 8 ) , com um padrão de TRUE.The data type is varchar( 8 ), with a default of TRUE.

Um valor TRUE Especifica que os logons usam suas próprias credenciais para se conectar ao rmtsrvname, com o rmtuser e rmtpassword argumentos que está sendo ignorados.A value of TRUE specifies that logins use their own credentials to connect to rmtsrvname, with the rmtuser and rmtpassword arguments being ignored. FALSE Especifica que o rmtuser e rmtpassword argumentos são usados para se conectar ao rmtsrvname especificado locallogin .FALSE specifies that the rmtuser and rmtpassword arguments are used to connect to rmtsrvname for the specified locallogin. Se rmtuser e rmtpassword também estiver definido como NULL, nenhum logon ou a senha será usada para se conectar ao servidor vinculado.If rmtuser and rmtpassword are also set to NULL, no login or password is used to connect to the linked server.

[ @locallogin = ] 'locallogin'
É um logon no servidor local.Is a login on the local server. locallogin está sysname, com um padrão NULL.locallogin is sysname, with a default of NULL. NULL Especifica que esta entrada se aplica a todos os logons locais que se conectam ao rmtsrvname.NULL specifies that this entry applies to all local logins that connect to rmtsrvname. Se não for NULL, locallogin pode ser um SQL ServerSQL Server logon ou um logon do Windows.If not NULL, locallogin can be a SQL ServerSQL Server login or a Windows login. O logon do Windows deve ter acesso ao SQL ServerSQL Server diretamente ou por meio de sua associação em um grupo do Windows com acesso.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'
É o logon remoto usado para se conectar ao rmtsrvname quando @useself é FALSE.Is the remote login used to connect to rmtsrvname when @useself is FALSE. Quando o servidor remoto é uma instância de SQL ServerSQL Server que usa a autenticação do Windows, rmtuser é um SQL ServerSQL Server logon.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á sysname, com um padrão NULL.rmtuser is sysname, with a default of NULL.

[ @rmtpassword = ] 'rmtpassword'
É a senha associada rmtuser.Is the password associated with rmtuser. rmtpassword está sysname, com um padrão NULL.rmtpassword is sysname, with a default of NULL.

Valores do código de retornoReturn Code Values

0 (êxito) ou 1 (falha)0 (success) or 1 (failure)

ComentáriosRemarks

Quando o usuário faz logon no servidor local e executa uma consulta distribuída que acessa uma tabela no servidor vinculado, o servidor local deve fazer logon no servidor vinculado em nome do usuário para acessar essa tabela.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. Use sp_addlinkedsrvlogin para especificar as credenciais de logon que o servidor local usa para efetuar logon no servidor vinculado.Use sp_addlinkedsrvlogin to specify the login credentials that the local server uses to log on to the linked server.

Observação

Para criar os melhores planos de consulta quando você estiver usando uma tabela em um servidor vinculado, o processador de consulta deverá ter estatísticas de distribuição de dados do servidor vinculado.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. Usuários que limitaram permissões em qualquer coluna da tabela podem não ter permissões suficientes para obter todas as estatísticas úteis e podem receber um plano de consulta menos eficiente e de baixo desempenho.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. Se o servidor vinculado for uma instância do SQL ServerSQL Server, para obter todas as estatísticas disponíveis, o usuário deverá ser proprietário da tabela ou membro da função de servidor fixa sysadmin, da função de banco de dados fixa db_owner ou da função de banco de dados fixa db_ddladmin no servidor vinculado.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. O SQL Server 2012 SP1 altera as restrições de permissão para obter estatísticas e permite que usuários com permissão SELECT acessem as estatísticas disponíveis através de 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. Para obter mais informações, consulte a seção de permissões de DBCC SHOW_STATISTICS (Transact-SQL).For more information, see the Permissions section of DBCC SHOW_STATISTICS (Transact-SQL).

O mapeamento padrão entre todos os logons no servidor local e os logons remotos no servidor vinculado é criado automaticamente com a execução de 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. O mapeamento padrão declara que o SQL ServerSQL Server usa as credenciais do usuário do logon local ao se conectar ao servidor vinculado em nome do logon.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. Isso é equivalente a executar sp_addlinkedsrvlogin com @useself definido como verdadeiro para o servidor vinculado, sem especificar um nome de usuário local.This is equivalent to executing sp_addlinkedsrvlogin with @useself set to true for the linked server, without specifying a local user name. Use sp_addlinkedsrvlogin somente para alterar o mapeamento padrão ou adicionar novos mapeamentos para logons locais específicos.Use sp_addlinkedsrvlogin only to change the default mapping or to add new mappings for specific local logins. Para excluir o mapeamento padrão ou qualquer outro mapeamento, use sp_droplinkedsrvlogin.To delete the default mapping or any other mapping, use sp_droplinkedsrvlogin.

Em vez de usar sp_addlinkedsrvlogin para criar um mapeamento de logon predeterminado, o SQL ServerSQL Server pode usar automaticamente as credenciais de segurança do Windows (nome de logon e senha do Windows) de um usuário que emite a consulta para se conectar a um servidor vinculado quando todas as condições a seguir existirem: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:

  • Um usuário é conectado ao SQL ServerSQL Server pelo Modo de Autenticação do Windows.A user is connected to SQL ServerSQL Server by using Windows Authentication Mode.

  • A delegação da conta de segurança está disponível no cliente e no servidor destinatário.Security account delegation is available on the client and sending server.

  • O provedor oferece suporte para o Modo de Autenticação do Windows; por exemplo, o SQL ServerSQL Server que é executado no Windows.The provider supports Windows Authentication Mode; for example, SQL ServerSQL Server running on Windows.

Observação

A delegação não deve estar habilitada para cenários de salto único, mas é obrigatória para cenários de vários saltos.Delegation does not have to be enabled for single-hop scenarios, but it is required for multiple-hop scenarios.

Após a autenticação ter sido executada pelo servidor vinculado com os mapeamentos definidos pela execução de sp_addlinkedsrvlogin na instância local do SQL ServerSQL Server, as permissões em objetos individuais no banco de dados remoto são determinadas pelo servidor vinculado, não pelo servidor 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.

sp_addlinkedsrvlogin não pode ser executado em uma transação definida pelo usuário.sp_addlinkedsrvlogin cannot be executed from within a user-defined transaction.

PermissõesPermissions

Requer a permissão ALTER ANY LOGIN no servidor.Requires ALTER ANY LOGIN permission on the server.

ExemplosExamples

A.A. Conectando todos os logons locais no servidor vinculado com suas próprias credenciais de usuárioConnecting all local logins to the linked server by using their own user credentials

O exemplo a seguir cria um mapeamento para verificar se todos os logons no servidor local se conectam por meio da Accounts do servidor vinculado usando suas próprias credenciais de usuário.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';  

Observação

Se houver mapeamentos explícitos criados para logons individuais, eles têm prioridade com relação a qualquer mapeamento global que possa existir para o servidor vinculado.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. Conectando um logon específico no servidor vinculado com credenciais de usuário diferentesConnecting a specific login to the linked server by using different user credentials

O exemplo a seguir cria um mapeamento para verificar se o usuário Domain\Mary do Windows se conecta por meio de Accounts do servidor vinculado usando o logon MaryP e a senha 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';  

Importante

Este exemplo não usa a Autenticação do Windows.This example does not use Windows Authentication. As senhas serão transmitidas descriptografadas.Passwords will be transmitted unencrypted. As senhas podem ser visíveis em definições de fonte de dados e scripts salvos em disco, em backups e em arquivos de log.Passwords may be visible in data source definitions and scripts that are saved to disk, in backups, and in log files. Nunca use uma senha de administrador nesse tipo de conexão.Never use an administrator password in this kind of connection. Consulte o administrador da rede para obter orientações sobre segurança específicas a seu ambiente.Consult your network administrator for security guidance specific to your environment.

Consulte tambémSee Also

Exibições do catálogo de servidores vinculados (Transact-SQL) Linked Servers Catalog Views (Transact-SQL)
sp_addlinkedserver (Transact-SQL) sp_addlinkedserver (Transact-SQL)
sp_droplinkedsrvlogin (Transact-SQL) sp_droplinkedsrvlogin (Transact-SQL)
Procedimentos armazenados do sistema (Transact-SQL)System Stored Procedures (Transact-SQL)