sp_dropserver 和 sp_addserver 不工作

Posted

技术标签:

【中文标题】sp_dropserver 和 sp_addserver 不工作【英文标题】:sp_dropserver and sp_addserver not working 【发布时间】:2011-05-10 21:38:55 【问题描述】:

我正在使用 SQL Server Express 2008 R2,我想将实例名称从“机器名称”\SQLEXPRESS2008R2 更改为“机器名称”。我跑了:

sp_dropserver 'old_name'

go

sp_addserver 'new_name', 'local'

go

然后重新启动 SQL 服务。现在当我看

Select @@SERVERNAME --this is correct

但这不正确?

Select serverproperty('ServerName') --This still shows old name

所以当我尝试通过 SSMS 连接到我的实例时,我仍然必须使用旧实例名称而不是我刚刚申请的新实例名称进行连接?我究竟做错了什么?为什么新名称不采用?

谢谢,

S

【问题讨论】:

我认为您不能将命名实例更改为默认实例... 哦,是这个问题吗?我以为你可以这样做……这可能是问题所在。 你以前读过this吗? 【参考方案1】:

这是来自在线书籍:

虽然@@SERVERNAME 函数和SERVERPROPERTY 函数的SERVERNAME 属性可能返回格式相似的字符串,但信息可能不同。 SERVERNAME 属性自动报告计算机的网络名称的变化。

相比之下,@@SERVERNAME 不会报告此类更改。 @@SERVERNAME 报告使用 sp_addserver 或 sp_dropserver 存储过程对本地服务器名称所做的更改。

第一条评论是正确的。您必须重新安装 SQL 才能将其更改为默认实例。

如果您使用命名实例更改机器名称,则每个 BOL 必须使用如下:

sp_dropserver <'old_name\instancename'>
GO
sp_addserver <'new_name\instancename'>, local
GO

【讨论】:

sp_setnetname 不会有帮助吗? 那么我应该能够使用新的实例名称登录吗?因此,如果我将机器从 Test1\SQLEXPRESS 更改为 Test2\SQLEXPRESS 并重新启动服务,我现在可以使用 Test2\SQLEXPRESS 登录到实例吗?如果是这样,那似乎不起作用?谢谢 我觉得改机名后重启服务还不够。我认为你必须重新启动。此外,SQL 浏览器需要了解更改才能将流量引导到正确的实例。 另外,您必须在 sp 语句中指定机器名称。 是的,我的机器名称大约在一年前被更改,从那以后至少重新启动了 100 次。【参考方案2】:

是的,重新启动 SQL 服务器有效。现在两个名字都正确显示了。

SELECT @@SERVERNAME 

SELECT serverproperty('ServerName') 

【讨论】:

以上是关于sp_dropserver 和 sp_addserver 不工作的主要内容,如果未能解决你的问题,请参考以下文章

sp_addlinkedserver,Synonym

计算机改名导致数据库链接的诡异问题

如何修改SQL Server 2008数据库服务器名称

如何修改SQL Server 2008数据库服务器名称

& 和 && 区别和联系,| 和 || 区别和联系

第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等