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。 若要更正此問題,請遵循下列步驟:
- 執行
sp_dropserver
local_server_name,droplogins (在此範例中,您會執行sp_dropserver SERV_LOCAL, droplogins
)。 - 執行
sp_addserver
local_server_name LOCAL (在此範例中,您會執行sp_addserver SERV_LOCAL, LOCAL
)。 - 停止並重新啟動 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,以修正問題。
其他相關資訊
安裝複寫時,您可能會收到此錯誤訊息,因為安裝程式會在涉及復寫的伺服器之間進行遠端過程調用。