適用対象: SQL Server
詳細
| 属性 | 値 |
|---|---|
| 製品名 | SQL Server |
| イベント ID | 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 を使用してサーバー名を探すことで、ローカル サーバーを特定します。 srvid = 0 のエントリが sysservers に見つからない場合、または srvid = 0 のサーバー名がローカルの Windows コンピューター名とは異なるサーバー名に属している場合は、エラーが表示されます。
ユーザー アクション
ローカル サーバーが正しく構成されているかどうかを確認するには、master..sysservers の srvstatus 列を調べます。 ローカル サーバーの場合、この値は 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_dropserverlocal_server_name, droplogins を実行します (この例では、sp_dropserver SERV_LOCAL, droploginsを実行します)。sp_addserverlocal_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 |
Note
ローカル サーバーの場合、サーバー ID (srvid) は 0 になります。
sysservers テーブルのエントリが正しく表示される場合もありますが、select @@servername を実行すると NULL が返されます。 これらのシナリオでも、上記の手順 1 から 3 を実行して問題を解決する必要があります。
詳細
レプリケーションをインストールするときに、レプリケーションに関係するサーバー間でリモート プロシージャ コールが行われるため、このエラー メッセージが表示されることがあります。