SQL Server服务器名称与默认实例名不一致的修复方法

it2026-02-07  1

 

SQL Server服务器名称与默认实例名不一致的修复方法

分类: 个人累积 SQl SERVER 数据库复制 sql server 服务器 sqlserver microsoft server 远程连接 [sql]  view plain copy   --原因分析:  --SERVERPROPERTY 函数的 ServerName 属性与@@SERVERNAME 返回相似的信息。  --ServerName 属性提供Windows 服务器和实例名称,两者共同构成唯一的服务器实例;  --@@SERVERNAME 提供当前配置的本地服务器名称。    --如果安装时未更改默认服务器名称,则 ServerName 属性和 @@SERVERNAME 返回相同的信息。如果在安装时已将本地服务器名称从默认服务器名称更改为其他名称,则 @@SERVERNAME 返回更改后的新名称。    --如果安装时未更改默认服务器名称,但是安装完成后更改过Windows 服务器名称,则@@SERVERNAME仍然返回安装时的服务器名称,ServerName 属性返回更改过后的Windows 服务器名称。也就是说,@@SERVERNAME不会报告Windows 服务器名称的更改,ServerName 属性会报告Windows 服务器名称的更改。这就会造成SQL Server默认实例的@@SERVERNAME和ServerName 属性不一致。这种情况在一些应用中常常会出现无法连接的问题,有时我们需要修复这种情况。    --修复方法:(修复方法很简单,直接执行以下语句即可)  use master           go           select @@servername         select serverproperty('servername')  ------    IF serverproperty('servername')<>@@servername      BEGIN    DECLARE  @server SYSNAME    SET   @server=@@servername        EXEC  sp_dropserver @server=@server      SET   @server=cast(serverproperty('servername') AS SYSNAME)     EXEC  sp_addserver @server=@server,@local='LOCAL'       END    ELSE      PRINT '实例名与主机名一致,无需修改!'     

若,安装SQL之后 服务器修改主机名,造成不一致,且之前有存在复制发布:

 

 机器名与实例名不同,解决办法

在执行 exec sp_addlinkedserver 'DMGZSRV10' 的时候一直提示

消息 15190,级别 16,状态 1,过程 sp_dropserver,第 56 行仍有对服务器 'DMGZSRV10' 的远程登录或链接登录。

又执行

exec sp_dropserver 'DMGZSRV10', 'droplogins' 

这时提示

无法删除服务器 'LC04',因为该服务器用作复制过程中的发布服务器。 (Microsoft SQL Server,错误: 20582)

下面是解决的方案

原始状态1、服务器名LC04 MSSQL实例名MSSQLSERVER2、在LC04上建立了发布,在另一台服务器上订阅或者用SQLServer管理器远程访问LC04上的SQLServer,出现错误:无法连接到 LC04。-----------------------------其他信息:在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) (Microsoft SQL Server,错误: 53)解决处理将LC04的计算机名称改为MSSQLSERVER与MSSQL实例名相同此时状态SQLServer管理器远程可以访问LC04的数据库,但不能订阅,出现错误:SQL Server 复制需要有实际的服务器名称才能连接到服务器。不支持通过服务器别名、IP 地址或任何其他备用名称进行连接。请指定实际的服务器名称“LC04”。 (Replication.Utilities)解决处理在LC04(现在应当名为MSSQLSERVER)的服务器上,执行如下代码SELECT @@SERVERNAME ,serverproperty('servername')发现两个不同,分别为LC04和MSSQLSERVER执行如下代码exec sp_droplinkedsrvlogin 'LC04',nullexec sp_dropserver 'LC04','droplogins'exec sp_addserver 'MSSQLSERVER' , 'LOCAL' 出现错误无法删除服务器 'LC04',因为该服务器用作复制过程中的发布服务器。 (Microsoft SQL Server,错误: 20582)解决处理select * from msdb.dbo.MSdistpublishersDELETE FROM msdb.dbo.MSdistpublishersselect * from msdb.dbo.MSdistpublishersexec sp_droplinkedsrvlogin 'LC04',nullexec sp_dropserver 'LC04','droplogins'exec sp_addserver 'MSSQLSERVER' , 'LOCAL' 重启SQLServer服务设置发布服务器属性,发现发布服务器的服务器名还是为LC04,造成发布执行错误:在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) (Microsoft SQL Server,错误: 53)使用 exec sp_helpserver发现name为repl_distributor的服务器的network_name还是LC04

解决处理

执行exec sp_setnetname 'repl_distributor','MSSQLSERVER'

再次设置发布服务器,并发布,完成 实际上在SQLServer和其他应用中还有可能用到原有的数据库名LC04 可以建立SQLServer的新别名为LC04,这样基本上都可以解决了

 

  上一篇如何删除发布服务器distribution下一篇timestamp应用(解决并发问题)——乐观锁和悲观锁【转】

转载于:https://www.cnblogs.com/hongb/p/3989031.html

相关资源:SQL数据库默认实例与命名实例的区别
最新回复(0)