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 a 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á esse erro. Você também verá esse erro se for detectado que o usuário remoto tem nome de logon nulo ou vazio.
A replicação usa definições de servidor remoto para se conectar ao Distribuidor, ao Editor e ao Assinante. No momento em que habilita e configura uma 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 encontrará 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 qualquer um dos servidores envolvidos na consulta ou usados na replicação tiver sido renomeado ou criado com base em uma imagem, você precisará certificar-se de que o nome NetBIOS (rede) corresponde à parte do computador do @@SERVERNAME do SQL Server. Se não corresponder, você poderá seguir as etapas descritas no tópico "Renomeando um Servidor" dos Manuais Online (Atualizados - SP3) 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.
Nome | Descrição | Valor Padrão |
Habilitado | Habilita ou desabilita o fluxo de trabalho. | Sim |
Prioridade | Define a Prioridade do Alerta. | 1 |
Severidade | Define a Severidade do Alerta. | 1 |
Target | Microsoft.SQLServer.2012.DBEngine | ||
Category | EventCollection | ||
Enabled | True | ||
Event_ID | 18483 | ||
Event Source | $Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$ | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application | ||
Comment | Mom2012ID='{9CF46B83-7BD2-49D5-A987-B24FCB6FD0D7}';MOM2012GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74} |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ | DataSource | Microsoft.Windows.EventProvider | Microsoft.SQLServer.SQLDefaultAccount |
GenerateAlert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="Microsoft.SQLServer.2012.Could_not_connect_to_server_because_it_is_not_defined_as_a_remote_login_at_the_server_1_5_Rule" Target="SQL2012Core!Microsoft.SQLServer.2012.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2012ID='{9CF46B83-7BD2-49D5-A987-B24FCB6FD0D7}';MOM2012GroupID={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" RunAs="SQL!Microsoft.SQLServer.SQLDefaultAccount">
<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="SQL!Microsoft.SQLServer.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.2012.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>