Primiți un mesaj de eroare "eroare 18482" atunci când încercați să efectuați un apel de procedură la distanță (RPC) de la un server la altul în SQL Server


Simptome


Atunci când încercați un apel de procedură la distanță (RPC) de la un server la altul (de exemplu, executând o procedură stocată pe un computer la distanță, cu o instrucțiune precum EXEC SERV_REMOTE. Puburi.. byroyalty), este posibil să primiți următorul mesaj de eroare:
Eroarea 18482: nu se poate conecta la site-ul ' 0 ', deoarece ' ' nu este definit ca server la distanță pe site.
Notă Dacă utilizați Microsoft SQL Server 2005, este posibil să primiți următorul mesaj de eroare:
Eroarea 18482: nu s-a putut conecta la serverul <server>, deoarece <Server de> nu este definit ca server la distanță. Verificați dacă ați specificat numele corect al serverului.

Cauză


Această eroare apare atunci când SQL Server nu poate executa un apel de procedură la distanță. Acest lucru poate fi cauzat de un server local configurat incorect. Pentru a efectua un apel de procedură la distanță, SQL Server determină mai întâi cine este serverul local căutând numele serverului cu srvid = 0 în sysservers. Dacă o intrare cu srvid = 0 nu este găsită în sysserverssau dacă numele serverului cu srvid = 0 aparține unui nume de server care diferă de numele computerului Windows NT local, veți primi eroarea.

Soluție de evitare


Pentru a determina dacă serverul local este configurat corect, examinați coloana srvstatus în coordonator.. sysservers. Această valoare trebuie să fie 0 pentru serverul local. De exemplu, să presupunem că serverul local a fost denumit "SERV_LOCAL", serverul la distanță a fost denumit "SERV_REMOTE", iar sysservers conținea următoarele informații:
   srvid srvstatus      srvname            srvnetname   ----- ---------      ---------------    ------------    ...   1     1              SERV_LOCAL         SERV_LOCAL   2     1              SERV_REMOTE        SERV_REMOTE 
În rezultatul anterior, SERV_LOCAL este serverul local, dar are o srvid de 1; ar trebui să fie 0. Pentru a corecta acest lucru, urmați acești pași:
  1. Rulează sp_dropserver local_server_name, droplogins (în acest exemplu, ar trebui să ruleze sp_dropserver SERV_LOCAL, droplogins).
  2. Rulează sp_addserver local_server_name, local (în acest exemplu, ar trebui să RULEZE sp_addserver SERV_LOCAL, local).
  3. Opriți și reporniți SQL Server.
După ce ați rulat acești pași, tabelul sysservers ar trebui să arate astfel:
   srvid srvstatus      srvname            srvnetname   ----- ---------      ---------------    ------------    ...   0     0              SERV_LOCAL         SERV_LOCAL   2     1              SERV_REMOTE        SERV_REMOTE 
Rețineți că ID-ul serverului (srvid) ar trebui să fie 0 pentru serverul local.

Mai multe informații


Este posibil să primiți acest mesaj de eroare atunci când instalați reproducerea, deoarece procesul de instalare face apeluri de procedură la distanță între serverele implicate în reproducerea.