Share via


MSSQLSERVER_18482

適用於:SQL Server

詳細資料

屬性
產品名稱 SQL Server
事件識別碼 18482
事件來源 MSSQLSERVER
元件 SQLEngine
符號名稱 REMLOGIN_INVALID_SITE
訊息文字 由於未將 '%.ls' 定義為遠端伺服器而無法連接到伺服器 '%.ls'。 請確認您已經指定正確的伺服器名稱。 %.*ls

說明

當您嘗試從一部伺服器執行遠端程序呼叫 (RPC) 到另一部伺服器時,就會發生此錯誤(例如,藉由使用 之類的 EXEC SERV_REMOTE.pubs..byroyalty 語句在遠端電腦上執行預存程式)。 向使用者回報類似下列的錯誤訊息

錯誤 18482:無法連線到伺服器 < SERV_REMOTE > ,因為 < SERV_REMOTE > 未定義為遠端伺服器。 請確認您已經指定正確的伺服器名稱。

原因

當 SQL Server 無法執行遠端程序呼叫時,就會發生此錯誤。 這可能會由設定不當的本機伺服器所造成。 若要進行遠端程序呼叫,SQL Server 會先藉由在 sysservers 中尋找具有 srvid = 0 的伺服器名稱來判斷本機伺服器是誰。 如果在 sysservers 中找不到具有 srvid = 0 的專案,或者,如果 srvid = 0 的伺服器名稱屬於與本機 Windows 電腦名稱稱不同的伺服器名稱,您會收到錯誤。

使用者動作

若要判斷本機伺服器是否已正確設定,請檢查 srvstatus master 中的資料行。sysservers。 本機伺服器的此值應該是 0。

例如,假設您的本機伺服器名為 SERV_LOCAL、遠端伺服器名為 SERV_REMOTE ,而 sysservers 包含下列資訊:

srvid srvstatus srvname srvname
1 2 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 LOCAL (在此範例中,您會執行 sp_addserver SERV_LOCAL, LOCAL )。
  3. 停止並重新啟動 SQL Server。

執行這些步驟之後,sysservers 資料表看起來應該如下所示:

srvid srvstatus srvname srvname
0 0 SERV_LOCAL SERV_LOCAL
2 1 SERV_REMOTE SERV_REMOTE

注意

伺服器識別碼 (srvid) 應該是本機伺服器的 0。

在某些情況下,sysservers 資料表中的專案看起來正確,但當您執行 select @@servername 時,它會傳回 Null。 在這些案例中,您仍應該執行上述步驟 1 到 3,以修正問題。

其他相關資訊

安裝複寫時,您可能會收到此錯誤訊息,因為安裝程式會在涉及複寫的伺服器之間進行遠端程序呼叫。