Estou tentando configurar um servidor vinculado no SQL Server 2017 usando o arquivo de hosts local do Windows no servidor em que o servidor vinculado está sendo configurado. A razão para isso é permitir que eu codifique o nome do servidor vinculado, mas configure o servidor para o qual ele aponta alterando o arquivo de hosts local.
Estou usando a autenticação do Windows em ambos os servidores de banco de dados. Eu consigo acessar os dois.
Quando crio um servidor vinculado referenciando o endereço IP, assim, funciona. Eu posso conectar e consultar uma tabela de amostra.
EXEC sp_addlinkedserver @server = '192.168.1.109'
, @srvproduct = 'SQL Server'
Quando adiciono a seguinte linha ao arquivo host, o servidor vinculado criado acima, que se conecta via endereço IP, não funciona mais.
192.168.1.109 hostsfiletest
Estou tendo o erro a seguir:
Msg 18456, Level 14, State 1, Line 18
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
Normalmente, eu pensaria que isso é algo a ver com a falta de SPNs, mas ambos os servidores nessa situação têm SPNs configurados, posso me conectar se remover a linha acima do arquivo hosts mais uma vez.
Além disso, se eu tentar configurar outro servidor vinculado usando o nome no arquivo hosts, assim, ele também falha, com o mesmo erro.
EXEC sp_addlinkedserver @server = 'hostsfiletest'
, @srvproduct = 'SQL Server'
Não tenho certeza onde estou errando.
Posso fazer ping no servidor de destino do servidor em que estou configurando o Linked Server e posso me conectar à instância SQL de destino desse mesmo servidor usando hostsfiletest como o nome da instância , para que a linha no arquivo hosts esteja claramente fazendo algo. Quando removo a linha do arquivo hosts, não consigo conectar usando hostsfiletest como o nome da instância.
Como outro teste, quando coloco a mesma linha acima no arquivo de hosts local do meu laptop, consigo me conectar ao servidor de destino no SSMS usando hostsfiletest como o nome do servidor.
Eu ficaria grato por qualquer ajuda. Também estou aberto a outras maneiras de alcançar a mesma coisa, se houver maneiras mais fáceis de configurar um servidor vinculado que aponte para um local configurável.
Sim. Os SPNs do Kerberos dependem do nome do host que você usa para se conectar. Se você se conectar a um host chamado
SomeServer.foo.bar
a conta de serviço ao executar o SQL Server remoto, deverá ter um SPN paraMSSQLSvc\SomeServer.foo.bar
. Esse é essencialmente o mesmo cenário que: Como adicionar um alias de nome de host para uma instância do SQL ServerVocê pode atualizar o provedor OleDb que você usa e desacoplar o nome do servidor vinculado do nome do SQL Server ao mesmo tempo assim: