zoukankan      html  css  js  c++  java
  • 转:SQL Server服务器名称与默认实例名不一致的修复方法

    --原因分析:    
    --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 '实例名与主机名一致,无需修改!'    
    View Code

    若,安装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实例名MSSQLSERVER
    2、在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',null
    exec sp_dropserver 'LC04','droplogins'
    exec sp_addserver 'MSSQLSERVER' , 'LOCAL' 

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


    解决处理

    select * from msdb.dbo.MSdistpublishers
    DELETE FROM msdb.dbo.MSdistpublishers
    select * from msdb.dbo.MSdistpublishers
    exec sp_droplinkedsrvlogin 'LC04',null
    exec 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,这样基本上都可以解决了

  • 相关阅读:
    通过web端启动关闭服务器程序以及检测程序运行状态
    Windows 自动监听程序,游戏服务器挂掉以后,自动监听程序将其重启起来
    自动监听程序,如果程序挂了,就重启
    删除log
    封装了一个C++类,当程序意外崩溃的时候可以生成dump文件,以便确定错误原因。
    贝塞尔曲线
    golang sql连接池 超时 数据库自动断开 ->127.0.0.1:3 306: wsarecv: An established connection was aborted by the software in your host machine.
    带控制的抢庄牛牛
    龙虎斗控制
    回归模型与房价预测
  • 原文地址:https://www.cnblogs.com/strayromeo/p/6951907.html
Copyright © 2011-2022 走看看