MSSQL em Linux: não foi possível conectar-se ao servidor porque ele não está definido como um acesso remoto no servidor

Microsoft.SQLServer.Linux.EventRule.DBEngine.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 habilita 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

Intervalo (segundos)

O intervalo de tempo recorrente em segundos no qual executar o fluxo de trabalho.

300

Prioridade

Define a Prioridade do Alerta.

1

Gravidade

Define a Severidade do Alerta.

1

Tempo de Sincronização

Tempo de Sincronização

 

Tempo Limite (em segundos)

Especifica o tempo que o fluxo de trabalho pode para ser executado antes de ser fechado e marcado como falha.

200

Tempo limite da conexão de banco de dados (segundos)

O fluxo de trabalho falhará e registrará um evento, se ele não conseguir acessar o banco de dados durante o período especificado.

15

Element properties:

TargetMicrosoft.SQLServer.Linux.DBEngine
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL em Linux: não foi possível conectar-se ao servidor porque ele não está definido como um acesso remoto no servidor
{0}
CommentMom2017ID='{9CF46B83-7BD2-49D5-A987-B24FCB6FD0D7}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

ID Module Type TypeId RunAs 
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ DataSource Microsoft.SQLServer.Linux.DataSource.EventCollectionFiltered Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.Linux.EventRule.DBEngine.Could_not_connect_to_server_because_it_is_not_defined_as_a_remote_login_at_the_server_1_5_Rule" Target="SqlDiscL!Microsoft.SQLServer.Linux.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{9CF46B83-7BD2-49D5-A987-B24FCB6FD0D7}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Microsoft.SQLServer.Linux.DataSource.EventCollectionFiltered">
<MachineName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>18483</EventDisplayNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.Linux.EventRule.DBEngine.Could_not_connect_to_server_because_it_is_not_defined_as_a_remote_login_at_the_server_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>Event ID: $Data/Property[@Name='EventID']$. $Data/Property[@Name='Message']$</AlertParameter3>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>