คุณได้รับข้อความแสดงข้อผิดพลาด "ข้อผิดพลาด๑๘๔๘๒" เมื่อคุณพยายามทำการเรียกกระบวนการระยะไกล (RPC) จากเซิร์ฟเวอร์หนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่งใน SQL Server


อาการ


เมื่อพยายามใช้งานการโทรระยะไกล (RPC) จากเซิร์ฟเวอร์หนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่ง (ตัวอย่างเช่นโดยการดำเนินการกระบวนงานที่เก็บไว้บนคอมพิวเตอร์ระยะไกลที่มีคำสั่งเช่น EXEC SERV_REMOTE pubs ... byroyalty) คุณอาจได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
ข้อผิดพลาด๑๘๔๘๒: ไม่สามารถเชื่อมต่อกับไซต์ ' 0 ' ได้เนื่องจาก ' ไม่ได้ถูกกำหนดให้เป็นเซิร์ฟเวอร์ระยะไกลที่ไซต์
หมายเหตุ ถ้าคุณกำลังใช้ Microsoft SQL Server ๒๐๐๕คุณอาจได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
ข้อผิดพลาด๑๘๔๘๒: ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ <servername> ได้เนื่องจาก <ServerName> ไม่ได้ถูกกำหนดเป็นเซิร์ฟเวอร์ระยะไกล ตรวจสอบว่าคุณได้ระบุชื่อเซิร์ฟเวอร์ที่ถูกต้องแล้ว

สาเหตุ


ข้อผิดพลาดนี้เกิดขึ้นเมื่อ 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_namedroplogins (ในตัวอย่างนี้คุณจะต้องเรียกใช้ sp_dropserver SERV_LOCAL droplogins)
  2. เรียกใช้ sp_addserver local_server_nameภายในเครื่อง (ในตัวอย่างนี้คุณจะต้องเรียกใช้ sp_addserver SERV_LOCAL ภายในเครื่อง)
  3. หยุดและรีสตาร์ทเซิร์ฟเวอร์ SQL Server
หลังจากเรียกใช้ขั้นตอนเหล่านั้นแล้วตาราง sysservers ควรมีลักษณะดังต่อไปนี้:
   srvid srvstatus      srvname            srvnetname   ----- ---------      ---------------    ------------    ...   0     0              SERV_LOCAL         SERV_LOCAL   2     1              SERV_REMOTE        SERV_REMOTE 
โปรดสังเกตว่าเซิร์ฟเวอร์ ID (srvid) ควรเป็น0สำหรับเซิร์ฟเวอร์ภายในเครื่อง

ข้อมูลเพิ่มเติม


คุณอาจได้รับข้อความแสดงข้อผิดพลาดนี้เมื่อติดตั้งการจำลองแบบได้เนื่องจากกระบวนการติดตั้งทำให้การเรียกกระบวนการระยะไกลระหว่างเซิร์ฟเวอร์ที่เกี่ยวข้องกับการจำลองแบบ