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.
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.
Target | Microsoft.SQLServer.2008.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 | Mom2008ID='{9CF46B83-7BD2-49D5-A987-B24FCB6FD0D7}';MOM2008GroupID={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.2008.Could_not_connect_to_server_because_it_is_not_defined_as_a_remote_login_at_the_server_1_5_Rule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2008ID='{9CF46B83-7BD2-49D5-A987-B24FCB6FD0D7}';MOM2008GroupID={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.2008.Could_not_connect_to_server_because_it_is_not_defined_as_a_remote_login_at_the_server_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>