sp_setnetname (Transact-SQL)

sys.servers 中的网络名称设置为用于远程 SQL Server 实例的实际网络计算机名。该过程可用于启用对计算机(其网络名中包含无效的 SQL Server 标识符)的远程存储过程调用执行。

主题链接图标Transact-SQL 语法约定

语法

sp_setnetname
@server = 'server', 
          @netname = 'network_name'

参数

  • @server = 'server'
    在用户编码的远程存储过程调用语法中引用的远程服务器名。sys.servers 中必须已经存在一行才能使用此 server。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 将链接服务器指回本地服务器。以这种方式引用的服务器不能参与分布式事务。

权限

要求具有 sysadminsetupadmin 固定服务器角色中的成员身份。

示例

以下示例显示在 SQL Server 上发出远程存储过程调用所使用的典型管理序列。

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