sp_setnetname (Transact-SQL)
将 sys.servers 中的网络名称设置为用于远程 SQL Server 实例的实际网络计算机名。该过程可用于启用对计算机(其网络名中包含无效的 SQL Server 标识符)的远程存储过程调用执行。
语法
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 将链接服务器指回本地服务器。以这种方式引用的服务器不能参与分布式事务。 |
权限
要求具有 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;