sp_setnetname (Transact-SQL)

適用対象:SQL Server

SQL Server のリモート インスタンスの sys.servers 実際のネットワーク コンピューター名にネットワーク名を設定します。 このプロシージャを使用すると、有効ではない SQL Server 識別子を含むネットワーク名を持つコンピューターへのリモート ストアド プロシージャ呼び出しを実行できます。

Transact-SQL 構文表記規則

構文

sp_setnetname
    [ @server = ] N'server'
    , [ @netname = ] N'netname'
[ ; ]

引数

[ @server = ] N'server'

ユーザーコード化されたリモート ストアド プロシージャ呼び出し構文で参照されるリモート サーバーの名前。 @serverは sysname で、既定値はありません。 この@serversys.servers使用するには、1 つの行が既に存在している必要があります。

[ @netname = ] N'netname'

リモート ストアド プロシージャの呼び出し先となるコンピューターのネットワーク名。 @netnameは sysname で、既定値はありません。

この名前は Microsoft Windows コンピューター名と一致する必要があり、名前には SQL Server 識別子で使用できない文字を含めることができます。

リターン コードの値

0 (成功) または 1 (失敗)。

結果セット

ありません。

解説

Windows コンピューターに対する一部のリモート ストアド プロシージャ呼び出しでは、コンピューター名に無効な識別子が含まれている場合に問題が発生する可能性があります。

リンク サーバーとリモート サーバーは同じ名前空間に存在するため、同じ名前を持つことはありません。 ただし、指定したサーバーに対してリンク サーバーとリモート サーバーの両方を定義するには、異なる名前を割り当て、 sp_setnetname その 1 つのネットワーク名を基になるサーバーのネットワーク名に設定します。

この例では、SQL Server インスタンスの実際の名前を使用 sqlserv2 します。

EXEC sp_addlinkedserver 'sqlserv2';
GO
EXEC sp_addserver 'rpcserv2';
GO
EXEC sp_setnetname 'rpcserv2', 'sqlserv2';

Note

リンク サーバーをローカル サーバーに戻すために使用 sp_setnetname することはサポートされていません。 この方法で参照されるサーバーは、分散トランザクションに参加できません。

アクセス許可

sysadmin および setupadmin 固定サーバー ロールのメンバーシップが必要です。

次の例は、リモート ストアド プロシージャ呼び出しを発行するために SQL Server で使用される一般的な管理シーケンスを示しています。

USE master;
GO
EXEC sp_addserver 'Win_1';
EXEC sp_setnetname 'Win_1', 'Win-1';
EXEC Win_1.master.dbo.sp_who;