将 sysservers 中的网络名称设置为用于远程 Microsoft® SQL Server™ 实例的实际网络计算机名。该过程可用于启用对计算机(其网络名称中包含无效的 SQL Server 标识符)的远程存储过程调用执行。
sp_setnetname @server = 'server',
@netname =
'network_name'
@server = 'server'
是在用户编码的远程存储过程调用语法中引用的远程服务器名。sysservers 中必须正好已有一行要使用该 server。server 的数据类型是 sysname,没有默认设置。
@netname = 'network_name'
是对其执行远程存储过程调用的计算机网络名称。network_name 的数据类型是 sysname,没有默认设置。
该名称必须与 Microsoft Windows NT® 计算机名匹配,并且可以包含 SQL Server 标识符中不允许的字符。
如果 SQL Server 计算机中定义了与 network_name 匹配的 DB-Library 别名,则该别名中的连接字符串信息用于连接到远程 SQL Server。
0(成功)或 1(失败)
无
如果计算机名包含无效的标识符,对 Windows NT 计算机的一些远程存储过程调用则可能遇到问题。使用该过程区别 sysservers.srvname 和 sysservers.srvnetname 之间的值。
因为链接服务器和远程服务器驻留在相同的命名空间内,所以它们的名称不能相同。不过,通过指派不同的名称并使用 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
EXEC sp_addserver 'Win_NT1'
EXEC sp_setnetname 'Win_NT1','Win-NT1'
EXEC Win_NT1.master.dbo.sp_who