Recebe uma mensagem de erro "Error 18482" quando tenta fazer uma chamada de procedimento remoto (RPC) de um servidor para outro no SQL Server


Sintomas


Ao tentar uma chamada de procedimento remoto (RPC) de um servidor para outro (por exemplo, executando um procedimento armazenado num computador remoto com uma declaração como EXEC SERV_REMOTE.pubs.. byroyalty),pode receber a seguinte mensagem de erro:
Erro 18482: Não é possível ligar-se ao site '0' porque '' não é definido como um servidor remoto no site.
Nota Se estiver a utilizar o Microsoft SQL Server 2005, poderá receber a seguinte mensagem de erro:
Erro 18482: Não foi possível ligar-se ao <nome do Servidor> porque <> do Nome do Servidor não está definido como um servidor remoto. Verifique se especificou o nome correto do servidor.

Causa


Este erro ocorre quando o SQL Server não pode executar uma chamada de procedimento remoto. Isto pode ser causado por um servidor local configurado indevidamente. Para esquirá uma chamada de procedimento remoto, o SQL Server determina primeiro quem é o servidor local, procurando o nome do servidor com srvid = 0 em sysservers. Se uma entrada com srvid = 0 não for encontrada em sysservers, ou se o nome do servidor com srvid = 0 pertencer a um nome de servidor diferente do nome do computador local Windows NT, receberá o erro.

Solução


Para determinar se o servidor local está configurado corretamente, examine a coluna srvstatus em master.. sysservers. Este valor deve ser 0 para o servidor local. Por exemplo, suponha que o seu servidor local foi chamado de "SERV_LOCAL", o servidor remoto foi nomeado "SERV_REMOTE", e os sysservers continham as seguintes informações:
   srvid srvstatus      srvname            srvnetname   ----- ---------      ---------------    ------------    ...   1     1              SERV_LOCAL         SERV_LOCAL   2     1              SERV_REMOTE        SERV_REMOTE 
Na saída anterior, SERV_LOCAL é o servidor local, mas tem um srvid de 1; Deve ser 0. Para corrigir isto, siga estes passos:
  1. Executar sp_dropserver local_server_name,droplogins (neste exemplo, você correria sp_dropserver SERV_LOCAL, droplogins).
  2. Executar sp_addserver local_server_name, LOCAL (neste exemplo, você correria sp_addserver SERV_LOCAL, LOCAL).
  3. Pare e reinicie o SQL Server.
Depois de executar esses passos, a mesa de sysservers deve parecer o seguinte:
   srvid srvstatus      srvname            srvnetname   ----- ---------      ---------------    ------------    ...   0     0              SERV_LOCAL         SERV_LOCAL   2     1              SERV_REMOTE        SERV_REMOTE 
Note que o ID do servidor (srvid) deve ser 0 para o servidor local.

Mais Informações


Pode receber esta mensagem de erro ao instalar a replicação porque o processo de instalação faz chamadas de procedimento remoto entre os servidores envolvidos na replicação.