Λαμβάνετε ένα μήνυμα σφάλματος "σφάλμα 18482" όταν προσπαθείτε να κάνετε μια κλήση απομακρυσμένης διαδικασίας (RPC) από ένα διακομιστή σε έναν άλλο στον SQL Server


Συμπτώματα


Όταν επιχειρείτε μια κλήση απομακρυσμένης διαδικασίας (RPC) από ένα διακομιστή σε έναν άλλο (για παράδειγμα, εκτελώντας μια αποθηκευμένη διαδικασία σε έναν απομακρυσμένο υπολογιστή με μια δήλωση όπως το EXEC SERV_REMOTE. pub.. byroyalty), ενδέχεται να λάβετε το ακόλουθο μήνυμα σφάλματος:
Σφάλμα 18482: δεν είναι δυνατή η σύνδεση με την τοποθεσία ' 0 ' επειδή ' ' δεν έχει οριστεί ως απομακρυσμένος διακομιστής στην τοποθεσία.
Σημείωση Εάν χρησιμοποιείτε τον Microsoft SQL Server 2005, ενδέχεται να λάβετε το ακόλουθο μήνυμα σφάλματος:
Σφάλμα 18482: δεν ήταν δυνατή η σύνδεση με το διακομιστή <όνομα_διακομιστή> επειδή το <όνομα_διακομιστή> δεν έχει οριστεί ως απομακρυσμένος διακομιστής. Βεβαιωθείτε ότι έχετε καθορίσει το σωστό όνομα διακομιστή.

Αιτία


Αυτό το σφάλμα παρουσιάζεται όταν ο SQL Server δεν μπορεί να εκτελέσει μια απομακρυσμένη διαδικασία κλήσεων. Αυτό μπορεί να οφείλεται σε μη σωστά ρυθμισμένο τοπικό διακομιστή. Για να πραγματοποιήσετε μια απομακρυσμένη διαδικασία, ο SQL Server καθορίζει πρώτα ποιος είναι ο τοπικός διακομιστής αναζητώντας το όνομα του διακομιστή με srvid = 0 στο sysservers. Εάν μια καταχώρηση με το srvid = 0 δεν βρεθεί στο sysserversή εάν το όνομα του διακομιστή με το srvid = 0 ανήκει σε ένα όνομα διακομιστή που είναι διαφορετικό από το τοπικό όνομα υπολογιστή Windows NT, θα λάβετε το σφάλμα.

Λύση


Για να διαπιστώσετε εάν ο τοπικός διακομιστής έχει ρυθμιστεί σωστά, εξετάστε τη στήλη srvstatus στο υπόδειγμα.. sysservers. Αυτή η τιμή πρέπει να είναι 0 για τον τοπικό διακομιστή. Για παράδειγμα, ας υποθέσουμε ότι ο τοπικός σας διακομιστής ονομάστηκε "SERV_LOCAL", ο απομακρυσμένος διακομιστής ονομάστηκε "SERV_REMOTE" και το sysservers περιείχε τις ακόλουθες πληροφορίες:
   srvid srvstatus      srvname            srvnetname   ----- ---------      ---------------    ------------    ...   1     1              SERV_LOCAL         SERV_LOCAL   2     1              SERV_REMOTE        SERV_REMOTE 
Στο προηγούμενο αποτέλεσμα, το SERV_LOCAL είναι ο τοπικός διακομιστής, αλλά έχει ένα srvid του 1; θα πρέπει να είναι 0. Για να το διορθώσετε αυτό, ακολουθήστε τα παρακάτω βήματα:
  1. Εκτελέστε sp_dropserver local_server_name, droplogins (σε αυτό το παράδειγμα, θα μπορούσατε να εκτελέσετε sp_dropserver SERV_LOCAL, droplogins).
  2. Εκτελέστε sp_addserver local_server_name, τοπική (σε αυτό το παράδειγμα, θα ΕΚΤΕΛΈΣΕΤΕ sp_addserver SERV_LOCAL, Local).
  3. Διακοπή και επανεκκίνηση του SQL Server.
Μετά την εκτέλεση αυτών των βημάτων, ο πίνακας sysservers πρέπει να μοιάζει με τον εξής:
   srvid srvstatus      srvname            srvnetname   ----- ---------      ---------------    ------------    ...   0     0              SERV_LOCAL         SERV_LOCAL   2     1              SERV_REMOTE        SERV_REMOTE 
Σημειώστε ότι το αναγνωριστικό διακομιστή (srvid) πρέπει να είναι 0 για τον τοπικό διακομιστή.

Περισσότερες πληροφορίες


Ενδέχεται να λάβετε αυτό το μήνυμα σφάλματος κατά την εγκατάσταση της αναπαραγωγής, επειδή η διαδικασία εγκατάστασης πραγματοποιεί κλήσεις απομακρυσμένης διαδικασίας μεταξύ των διακομιστών που εμπλέκονται στην αναπαραγωγή.