sp_setnetname (Transact-SQL)

适用范围:SQL Server

将网络名称 sys.servers 设置为 SQL Server 远程实例的实际网络计算机名称。 此过程可用于对具有网络名称的计算机执行远程存储过程调用,这些计算机包含无效的 SQL Server 标识符。

Transact-SQL 语法约定

语法

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;