繁体   English   中英

SQL Server @@ SERVERNAME返回旧计算机名称?

[英]SQL Server @@SERVERNAME returning old machine name?

我刚在SQL Server 2008 R2中偶然发现一个问题-调用@@SERVERNAME ,它返回的是旧计算机的计算机名,而不是当前的计算机名。 为什么是这样? 我该如何解决? SQL Server以某种方式记住了旧计算机的名称。

这是众所周知的并已记录在案,请参阅重命名承载SQL Server独立实例的计算机

当您更改运行SQL Server的计算机的名称时,新名称将在SQL Server启动期间被识别。 您不必再次运行安装程序来重置计算机名称。 而是,使用以下步骤来更新存储在sys.servers中并由系统功能@@ SERVERNAME报告的系统元数据:

sp_dropserver <old_name>;
GO
sp_addserver <new_name>, local;
GO

您还可以使用SERVERPROPERTY('MachineName')保证始终返回更新的名称:

MachineName运行服务器实例的Windows计算机名称。 对于群集实例,即在Microsoft群集服务上的虚拟服务器上运行的SQL Server实例,它将返回虚拟服务器的名称。

SERVERPROPERTY('ComputerNamePhysicalNetBIOS')将返回集群中的当前活动节点,或与非集群实例上的'MachineName'相同的值。

编辑(由第三方)以添加WEFX的评论,以防有人错过:

另外,您需要重新启动SQL服务(或重新启动SQL Server),以便SELECT @@SERVERNAME返回准确的(新)服务器名。

我怀疑这是因为实例是默认安装,并且当时继承了计算机名称并保留了该名称。 尝试这个?

SELECT SERVERPROPERTY('MachineName')

有时您会得到一个错误There are still remote logins or linked logins for the server 'yourServerName'运行sp_dropserver 'oldServerName';There are still remote logins or linked logins for the server 'yourServerName' sp_dropserver 'oldServerName';

如果您遇到这种错误,请尝试运行sp_dropserver 'oldServerName', 'droplogins'; 代替。

我尝试了所有可能的解决方案,但批准的答案对我不起作用。 我已经浏览了一下,并提出了完美的解决方案。 我希望有人能对此有所帮助。

1)通过Window + R键打开注册表。 输入regedit

2)转到* HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Microsoft \\ Microsoft SQL Server *您将看到大量带编号的目录(100,120,130 ....)

要么

您只需在注册表编辑器的地址栏中键入“ Computer \\ HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Microsoft \\ Microsoft SQL Server \\”

3)浏览所有编号的目录,看看是否可以在其中找到“ Machines ”目录

4)找到“ Machines ”后,将OriginalMachineName键更改为您想要的服务器名称。 这实际上是Windows首次安装时的原始计算机名称。

PS:我的路径是OriginalMachineName> 计算机\\ HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Microsoft \\ Microsoft SQL Server \\ 130 \\ Machines

sp_addserver将修复它.....

就我而言,我不能放弃名字。 我可以重新启动MSSQL或VM, @@SERVERNAME始终返回旧名称,而其他所有方法(包括SERVERPROPERTY('SERVERNAME') )都返回新名称,这会引起各种问题。 事实证明,删除名称并重新添加(当然,然后重新启动MSSQL)可以解决此奇怪的问题:

sp_dropserver <new_name>; GO
sp_addserver <new_name>, local; GO

如果您先运行sp_dropserver ,然后再运行sp_addserver如其他人所述)并且未使用SELECT @@ SERVERNAME进行更改,则数据库名称也区分大小写。 只要检查您拼写正确的数据库名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM