次の方法で共有


MSSQLSERVER_18482

適用対象: 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 である必要があります。 これを修正するには、次の手順のようにします。

  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

Note

ローカル サーバーの場合、サーバー ID (srvid) は 0 になります。

sysservers テーブルのエントリが正しく表示される場合もありますが、select @@servername を実行すると NULL が返されます。 これらのシナリオでも、上記の手順 1 から 3 を実行して問題を解決する必要があります。

詳細

レプリケーションをインストールするときに、レプリケーションに関係するサーバー間でリモート プロシージャ コールが行われるため、このエラー メッセージが表示されることがあります。