如果更改了运行 SQL Server的计算机的名称,则会在 SQL Server 启动期间识别新名称。 无需再次运行安装程序来重置计算机名称。 请使用以下步骤更新存储在 sys.servers 中的系统元数据,此元数据由系统函数@@SERVERNAME报告。 更新系统元数据,以反映使用 @@SERVERNAME 的远程连接和应用程序的计算机名称更改,或者从 sys.servers 查询服务器名称。
以下步骤不能用于重命名 SQL Server 的实例。 这些步骤只能用于重命名实例名中与计算机名称对应的部分。 例如,可以将托管 SQL Server 命名 Instance1 实例的计算机更改为另一个名称,例如 MB2。 但是,名称 Instance1 的实例部分将保持不变。 在此示例中,\\ComputerName\ InstanceName 将从 \\MB1\Instance1 更改为 \\MB2\Instance1。
开始之前
开始重命名过程之前,请查看下列信息:
如果 SQL Server 实例是 SQL Server 故障转移群集的一部分,则计算机的重命名过程不同于承载独立实例的计算机的重命名过程。
SQL Server 不支持重命名参与复制的计算机,除非对复制使用日志传送。 如果主计算机永久丢失,则可以重命名日志传送中的辅助计算机。 有关详细信息,请参阅日志传送和复制 (SQL Server)。
如果重命名配置为使用 Reporting Services 的计算机,则 Reporting Services在计算机名称更改后可能不可用。 有关详细信息,请参阅 重命名报表服务器计算机。
重命名配置为使用数据库镜像的计算机时,必须先关闭数据库镜像,然后才能执行重命名操作。 然后,使用新的计算机名称重新建立数据库镜像。 数据库镜像的元数据不会自动更新,以反映新的计算机名称。 使用以下步骤更新系统元数据。
如果用户通过以硬编码方式引用计算机名称的 Windows 组连接到 SQL Server ,则用户可能无法再连接到 SQL Server。 如果 Windows 组指定旧计算机名称,则重命名后可能会发生这种情况。 若要确保这样的 Windows 组在重命名操作之后可以连接 SQL Server ,请更新 Windows 组以指定新计算机名称。
重启 SQL Server 后,可以使用新的计算机名称连接到 SQL Server。 为了确保@@SERVERNAME返回本地服务器实例的更新名称,应手动运行适用于方案的以下过程。 使用的过程取决于您是更新托管默认实例还是命名实例的 SQL Server 的计算机。
重命名托管独立 SQL Server 实例的计算机
对于承载 SQL Server默认实例的重命名计算机,请运行以下过程:
sp_dropserver <old_name>; GO sp_addserver <new_name>, local; GO
重新启动 SQL Server实例。
对于承载 SQL Server命名实例的重命名计算机,请运行以下过程:
sp_dropserver <old_name\instancename>; GO sp_addserver <new_name\instancename>, local; GO
重新启动 SQL Server实例。
重命名操作后
重命名计算机后,使用旧计算机名称的任何连接都必须使用新名称进行连接。
验证重命名作是否已成功完成
从 @@SERVERNAME 或 sys.servers 中选择信息。 @@SERVERNAME函数将返回新名称,sys.servers 表将显示新名称。 以下示例演示如何使用 @@SERVERNAME。
SELECT @@SERVERNAME AS 'Server Name';
其他注意事项
远程登录 - 如果计算机具有任何远程登录名, 则运行sp_dropserver 可能会生成类似于以下内容的错误:
Server: Msg 15190, Level 16, State 1, Procedure sp_dropserver, Line 44 There are still remote logins for the server 'SERVER1'.
若要解决此错误,必须删除此服务器的远程登录。
取消远程登录功能
对于默认实例,请运行以下过程:
sp_dropremotelogin old_name; GO
对于命名实例,请运行以下过程:
sp_dropremotelogin old_name\instancename; GO
链接服务器配置 - 链接服务器配置将受到计算机重命名操作的影响。 使用 sp_addlinkedserver
或 sp_setnetname
可更新计算机名称引用。 有关详细信息,请参阅sp_addlinkedserver(Transact-SQL)或sp_setnetname(Transact-SQL)。
客户端别名 - 使用命名管道的客户端别名将受到计算机重命名作的影响。 例如,如果创建了别名“PROD_SRVR”以指向 SRVR1 并使用命名管道协议,则管道名称将如下所示 \\SRVR1\pipe\sql\query
。 重命名计算机后,命名管道的路径将不再有效。 有关 Named Pipes 的详细信息,请参阅 使用 Named Pipes 创建有效的连接字符串。