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,无默认值。 必须已存在一行 sys.servers
才能使用此 @server。
[ @netname = ] N'netname'
远程存储过程调用的计算机的网络名称。 @netname为 sysname,没有默认值。
此名称必须与 Windows 计算机名称匹配,并且该名称可以包含 SQL Server 标识符中不允许的字符。
返回代码值
0
(成功)或 1
(失败)。
结果集
无。
注解
如果计算机名称包含无效的标识符,则对 Windows 计算机的一些远程存储过程调用可能会遇到问题。
由于链接服务器和远程服务器位于同一命名空间中,因此它们不能具有相同的名称。 但是,可以通过分配不同的名称来定义链接服务器和远程服务器,并使用 sp_setnetname
它们之一的网络名称设置为基础服务器的网络名称。
在此示例中,假设 sqlserv2
是 SQL 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;