sp_setnetname (Transact-SQL)
sys.servers 内のネットワーク名を、SQL Server のリモート インスタンスの実際のネットワーク コンピュータ名に設定します。このプロシージャを使用すると、ネットワーク名に無効な SQL Server 識別子が含まれるコンピュータに対して、リモート ストアド プロシージャ呼び出しを実行できます。
構文
sp_setnetname
@server = 'server',
@netname = 'network_name'
引数
@server = 'server'
ユーザーが作成したリモート ストアド プロシージャ呼び出しの構文で参照しているリモート サーバーの名前を指定します。この server を使用するには、既に sys.servers に 1 行のデータが含まれている必要があります。server のデータ型は sysname で、既定値はありません。@netname ='network_name'
リモート ストアド プロシージャ呼び出しが行われるコンピュータのネットワーク名を指定します。network_name のデータ型は sysname で、既定値はありません。この名前は Microsoft Windows コンピュータ名と一致している必要があります。SQL Server の識別子では使用できない文字を含めることができます。
戻り値
0 (成功) または 1 (失敗)
結果セット
なし
説明
コンピュータ名に無効な識別子が含まれている場合は、Windows コンピュータに対するリモート ストアド プロシージャの呼び出しで問題が生じることがあります。
リンク サーバーとリモート サーバーは同じ名前空間に存在するため、同じ名前にはできません。しかし、リンク サーバーとリモート サーバーに別の名前を割り当て、sp_setnetname を使用して、一方のネットワーク名を基になるサーバーのネットワーク名に設定すると、特定のサーバーに対して両方のサーバーを定義できます。
--Assume sqlserv2 is actual name of SQL Server
--database server
EXEC sp_addlinkedserver 'sqlserv2';
GO
EXEC sp_addserver 'rpcserv2';
GO
EXEC sp_setnetname 'rpcserv2', 'sqlserv2';
注意 |
---|
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;