Du får feilmeldingen "Feil 18482" når du prøver å gjøre en remote procedure call (RPC) fra én server til en annen i SQL Server


Symptomer


Når du forsøker et eksternt prosedyrekall (RPC) fra én server til en annen (for eksempel ved å kjøre en lagret prosedyre på en ekstern datamaskin med en setning som EXEC SERV_REMOTE.pubs... ByRoyalty), kan du få følgende feilmelding:

Feil 18482: Kan ikke koble til området '0' fordi '' er ikke definert som en ekstern server på området.
Obs! Hvis du bruker Microsoft SQL Server 2005, kan du få følgende feilmelding:
Feil 18482: Kan ikke koble til serveren <servernavn> fordi <servernavn> ikke er definert som en ekstern server. Kontroller at du angav riktig servernavn.

Årsak


Denne feilen oppstår når SQL Server ikke kan kjøre et eksternt prosedyrekall. Dette kan være forårsaket av en lokal server som er feil konfigurert. Hvis du vil gjøre en ekstern prosedyre som kaller, SQL Server kontrollerer først som den lokale serveren er ved å se etter navnet på serveren med srvid = 0 i sysservers. Hvis en post med srvid = 0 finnes ikke i sysservers, eller hvis serveren navn med srvid = 0 tilhører et servernavn som er forskjellig fra det lokale datamaskinnavnet i Windows NT, får du feilmelding.

Løsning


For å fastslå om den lokale serveren er konfigurert på riktig måte, kan du undersøke kolonnen srvstatus i -master... sysservers. Denne verdien må være 0 for den lokale serveren.

Tenk deg at den lokale serveren ble kalt "SERV_LOCAL", den eksterne serveren ble kalt "SERV_REMOTE" og sysservers inneholder følgende informasjon:


srvid srvstatus srvname srvnetname
----- --------- --------------- ------------ ...
1 1 SERV_LOCAL SERV_LOCAL
2 1 SERV_REMOTE SERV_REMOTE
I det foregående resultatet, SERV_LOCAL er den lokale serveren, men den har en srvid på 1; den må være 0. Hvis du vil rette dette, følger du denne fremgangsmåten:

  1. Kjøre sp_dropserver local_server_name, droplogins (i dette eksemplet vil du kjøre sp_dropserver SERV_LOCAL, droplogins).
  2. Kjøre sp_addserver local_server_name, lokal (i dette eksemplet vil du kjøre sp_addserver SERV_LOCAL, lokale).
  3. Stopp og Start SQL Server.
Når du har kjørt disse trinnene, skal sysservers -tabellen se slik ut:


srvid srvstatus srvname srvnetname
----- --------- --------------- ------------ ...
0 0 SERV_LOCAL SERV_LOCAL
2 1 SERV_REMOTE SERV_REMOTE
Merk at ID-server (srvid) skal være 0 for den lokale serveren.

Hvis du vil ha mer informasjon


Du kan få denne feilmeldingen når du installerer replication fordi installasjonen gjør at eksterne prosedyrekall mellom serverne som er involvert i replikering.