sp_setnetname (Transact-SQL)
適用対象: SQL Server
sys.servers
のネットワーク名を、SQL Server のリモート インスタンスの実際のネットワーク コンピューター名に設定します。 このプロシージャを使用すると、有効ではない SQL Server 識別子を含むネットワーク名を持つコンピューターへのリモート ストアド プロシージャ呼び出しを実行できます。
構文
sp_setnetname
[ @server = ] N'server'
, [ @netname = ] N'netname'
[ ; ]
引数
[ @server = ] N'server'
ユーザーコード化されたリモート ストアド プロシージャ呼び出し構文で参照されるリモート サーバーの名前。 @server は sysname で、既定値はありません。 この@serverを使用するには、sys.servers
の 1 つの行が既に存在している必要があります。
[ @netname = ] N'netname'
リモート ストアド プロシージャの呼び出し先となるコンピューターのネットワーク名。 @netname は sysname で、既定値はありません。
この名前は Windows コンピューター名と一致する必要があり、名前には SQL Server 識別子で許可されていない文字を含めることができます。
リターン コードの値
0
(成功) または 1
(失敗)。
結果セット
ありません。
解説
Windows コンピューターに対する一部のリモート ストアド プロシージャ呼び出しでは、コンピューター名に無効な識別子が含まれている場合に問題が発生する可能性があります。
リンク サーバーとリモート サーバーは同じ名前空間に存在するため、同じ名前を持つことはありません。 ただし、指定したサーバーに対してリンク サーバーとリモート サーバーの両方を定義するには、異なる名前を割り当て、 sp_setnetname
を使用して、そのうちの 1 つのネットワーク名を基になるサーバーのネットワーク名に設定します。
この例では、 sqlserv2
が SQL Server インスタンスの実際の名前であるとします。
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;