MSSQL 2016: Não foi possível conectar-se ao servidor porque ele não está definido como um logon remoto no servidor

Microsoft.SQLServer.2016.Could_not_connect_to_server_because_it_is_not_defined_as_a_remote_login_at_the_server_1_5_Rule (Rule)

A configuração de segurança para a execução de RPCs (chamadas de procedimento remoto) em um servidor remoto envolve a configuração de mapeamentos de logon no servidor remoto e possivelmente no servidor local que tem uma instância do Microsoft SQL Server em execução. O mapeamento é específico de um determinado nome de servidor\instância, normalmente o nome NetBIOS de uma instância padrão e, no caso de uma instância nomeada, o nome NetBIOS e o nome da instância. Se o mapeamento de logon não existir ou se o nome do servidor especificado na cadeia de conexão não corresponder ao nome exato na tabela sysremotelogins e a conta de convidado não tiver mapeamento em sysremotelogins, você receberá essa mensagem de erro. Você também verá essa mensagem de erro se for detectado que o usuário remoto tem nome de logon nulo ou vazio.

Knowledge Base article:

Resumo

A configuração de segurança para a execução de RPCs (chamadas de procedimento remoto) em um servidor remoto envolve a configuração de mapeamentos de logon no servidor remoto e possivelmente no servidor local que tem uma instância do Microsoft SQL Server em execução. O mapeamento é específico de um determinado nome de servidor\instância, normalmente o nome NetBIOS de uma instância padrão e, no caso de uma instância nomeada, o nome NetBIOS e o nome da instância. Se o mapeamento de logon não existir ou se o nome do servidor especificado na cadeia de conexão não corresponder ao nome exato na tabela sysremotelogins e a conta de convidado não tiver mapeamento em sysremotelogins, você receberá essa mensagem de erro. Você também verá essa mensagem de erro se for detectado que o usuário remoto tem nome de logon nulo ou vazio.

Resoluções

A replicação usa definições de servidor remoto para se conectar ao Distribuidor, Publicador e Assinante. No momento em que ativa e configura a replicação, você cria implicitamente servidores remotos e adiciona mapeamentos de logon para essas instâncias remotas do SQL Server. As cadeias de conexão de replicação sempre especificarão o nome NetBios de uma instância padrão e, no caso de uma instância nomeada, o nome NetBIOS e o nome da instância. Portanto, a replicação não localizará nem usará nomes de servidores remotos definidos para endereços IP ou para nomes de domínios totalmente qualificados. Quando a tentativa de conexão de replicação não localizar o nome NetBIOS em sysremotelogins, você receberá o erro acima.

Há suporte para a replicação do Microsoft SQL Server quando os servidores envolvidos são registrados pelo nome NetBIOS (rede), mas não quando os servidores são registrados por endereço IP ou nome de domínio totalmente qualificado. Para obter mais informações sobre como executar a replicação entre computadores que executam o SQL Server em domínios não confiáveis ou na Internet, consulte o artigo 321822 da Base de Dados de Conhecimento Microsoft.

Observação O suporte a servidores remotos é fornecido somente para compatibilidade com versões anteriores. Novos aplicativos que precisem executar procedimentos armazenados em instâncias remotas do SQL Server deverão usar servidores vinculados.

Se algum dos servidores envolvidos na consulta ou usados na replicação tiver sido renomeado ou criado com base em uma imagem, verifique se o nome NetBIOS (rede) corresponde à parte da máquina do @@SERVERNAME do SQL Server. Se não corresponder, você poderá seguir as etapas descritas no tópico dos Manuais Online (atualizados - SP3) sobre como renomear um servidor, para atualizar o valor de @@SERVERNAME. Essa alteração requer a reinicialização da instância do SQL Server. Para obter mais informações sobre o motivo pelo qual a configuração da replicação não tem êxito quando o SQL Server 2000 é implantado por meio de uma imagem de disco, consulte o artigo 818334 da Base de Dados de Conhecimento Microsoft.

Se esse erro ocorrer durante a replicação, verifique se você configurou o Distribuidor, o Publicador e o Assinante usando o nome NetBIOS (rede), e não o endereço IP ou o nome de domínio totalmente qualificado.

Parâmetros Substituíveis

Nome

Descrição

Valor padrão

Habilitado

Habilita ou desabilita o fluxo de trabalho.

Sim

Prioridade

Define a Prioridade do Alerta.

1

Gravidade

Define a Severidade do Alerta.

1

Element properties:

TargetMicrosoft.SQLServer.2016.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID18483
Event Source$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2016: Não foi possível conectar-se ao servidor porque ele não está definido como um logon remoto no servidor
{0}
Event LogApplication
CommentMom2016ID='{9CF46B83-7BD2-49D5-A987-B24FCB6FD0D7}';MOM2016GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

ID Module Type TypeId RunAs 
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ DataSource Microsoft.Windows.EventProvider Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.2016.Could_not_connect_to_server_because_it_is_not_defined_as_a_remote_login_at_the_server_1_5_Rule" Target="SQL2016Core!Microsoft.SQLServer.2016.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2016ID='{9CF46B83-7BD2-49D5-A987-B24FCB6FD0D7}';MOM2016GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>18483</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2016.Could_not_connect_to_server_because_it_is_not_defined_as_a_remote_login_at_the_server_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>