sp_addlinkedsrvlogin (Transact-SQL)

Aplica-se a:SQL Server

Cria ou atualiza um mapeamento entre um logon na instância local do SQL Server e uma conta de segurança em um servidor remoto.

Convenções de sintaxe de Transact-SQL

Sintaxe

sp_addlinkedsrvlogin
    [ @rmtsrvname = ] N'rmtsrvname'
    [ , [ @useself = ] 'useself' ]
    [ , [ @locallogin = ] N'locallogin' ]
    [ , [ @rmtuser = ] N'rmtuser' ]
    [ , [ @rmtpassword = ] N'rmtpassword' ]
[ ; ]

Argumentos

@rmtsrvname [ = ] N'rmtsrvname'

O nome de um servidor vinculado ao qual o mapeamento de logon se aplica. @rmtsrvname é sysname, sem padrão.

@useself [ = ] 'useself'

Determina se o rmtsrvname deve ser conectado a rmtsrvname representando logons locais ou enviando explicitamente um logon e senha. @useself é varchar(8), com um padrão de true.

  • Um valor de true especifica que os logons usam suas próprias credenciais para se conectar a @rmtsrvname, com os argumentos @rmtuser e @rmtpassword sendo ignorados.
  • falseEspecifica que os argumentos @rmtuser e @rmtpassword são usados para se conectar a @rmtsrvname para o @locallogin especificado.

Se @rmtuser e @rmtpassword estiverem definidos como NULL, nenhum login ou senha será usado para se conectar ao servidor vinculado.

@locallogin [ = ] N'locallogin'

Um login no servidor local. @locallogin é sysname, com um padrão de NULL. NULL Especifica que essa entrada se aplica a todos os logons locais que se conectam a @rmtsrvname. Caso contrário NULL, @locallogin pode ser um logon do SQL Server ou uma conta do Windows. A conta do Windows deve ter acesso ao SQL Server diretamente ou por meio da associação a um grupo do Windows.

@rmtuser [ = ] N'rmtuser'

O login remoto usado para se conectar a @rmtsrvname quando @useself é false. @rmtuser é sysname, com um padrão de NULL. Quando o servidor remoto é uma instância do SQL Server que não usa a Autenticação do Windows, @rmtuser é um logon do SQL Server.

@rmtpassword [ = ] N'rmtpassword'

A senha associada ao @rmtuser. @rmtpassword é sysname, com um padrão de NULL.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

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. Use sp_addlinkedsrvlogin para especificar as credenciais que o servidor local usa para entrar no servidor vinculado.

Observação

Para criar os melhores planos de consulta quando você estiver usando uma tabela em um servidor vinculado, o processador de consulta deve ter estatísticas de distribuição de dados do servidor vinculado. 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. Se o servidor vinculado for uma instância do SQL Server, para obter todas as estatísticas disponíveis, o usuário deverá possuir a tabela ou ser 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. O SQL Server 2012 SP1 (11.0.3x) modifica as restrições de permissão para obter estatísticas e permite que os usuários com permissão SELECT acessem estatísticas disponíveis por meio do DBCC SHOW_STATISTICS. Para obter mais informações, consulte a seção Permissões do DBCC SHOW_STATISTICS (Transact-SQL).

Um mapeamento padrão entre todos os logons no servidor local e logons remotos no servidor vinculado é criado automaticamente executando sp_addlinkedservero . O mapeamento padrão indica que o SQL Server usa as credenciais do usuário do logon local ao se conectar ao servidor vinculado em nome do logon. Isso é equivalente à execução sp_addlinkedsrvlogin com @useself set to true para o servidor vinculado, sem especificar um nome de usuário local. Use sp_addlinkedsrvlogin apenas para alterar o mapeamento padrão ou para adicionar novos mapeamentos para logons locais específicos. Para excluir o mapeamento padrão ou qualquer outro mapeamento, use sp_droplinkedsrvlogin.

Em vez de ter que usar sp_addlinkedsrvlogin para criar um mapeamento de logon predeterminado, o SQL 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 seguintes condições existirem:

  • Um usuário está conectado ao SQL Server usando o Modo de Autenticação do Windows.

  • A delegação da conta de segurança está disponível no cliente e no servidor destinatário.

  • O provedor oferece suporte ao Modo de Autenticação do Windows; por exemplo, o SQL Server em execução no Windows.

Observação

A delegação não precisa ser habilitada para cenários de salto único, mas é necessária para cenários de salto múltiplo.

Depois que a autenticação tiver sido executada pelo servidor vinculado usando os mapeamentos definidos pela execução sp_addlinkedsrvlogin na instância local do SQL Server, as permissões em objetos individuais no banco de dados remoto serão determinadas pelo servidor vinculado, não pelo servidor local.

sp_addlinkedsrvlogin não pode ser executado de dentro de uma transação definida pelo usuário.

Permissões

Requer a permissão ALTER ANY LOGIN no servidor.

Exemplos

R. Conecte todos os logons locais ao servidor vinculado usando suas próprias credenciais de usuário

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.

EXEC sp_addlinkedsrvlogin 'Accounts';

Ou

EXEC sp_addlinkedsrvlogin 'Accounts', 'true';

Observação

Se houver mapeamentos explícitos criados para logons individuais, eles terão precedência sobre quaisquer mapeamentos globais que possam existir para esse servidor vinculado.

B. Conectar um logon específico ao servidor vinculado usando credenciais de usuário diferentes

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.

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

Cuidado

Este exemplo não usa a Autenticação do Windows. As senhas serão transmitidas descriptografadas. As senhas podem estar visíveis em definições de fonte de dados e scripts salvos em disco, em backups e em arquivos de log. Nunca use uma senha de administrador nesse tipo de conexão. Consulte o administrador da rede para obter orientações sobre segurança específicas a seu ambiente.