次の方法で共有


sp_setnetname (Transact-SQL)

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

トピック リンク アイコンTransact-SQL 構文表記規則

構文

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;