Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 395|回复: 0

[解决方案]sql server复制需要有实际的服务器名称才能连接到服务器

[复制链接]
  • TA的每日心情
    奋斗
    前天 15:06
  • 签到天数: 802 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726006
    发表于 2021-7-13 14:09:46 | 显示全部楼层 |阅读模式

      在配置数据同步的时候,要求相互同步的两台机器的数据库必须通过默认实例名称进行连接。如果你的默认实例已经删掉了,在当前实例上进行新建发布操作时候,会提示你:“由于未在SqlServer的此实例上安装复制组件,Microsoft SQL server 无法访问这些组件,请参阅SQL Server……”

      注意下面还有一个附加的提示,它的意思就是说默认实例名和当前的实例名称不一致。其实这个才是导致不能复制的主要原因。把它解决了,你就可以进行复制了。

      产生的原因是因为安装完SqlServer之后,又修改了计算机的名称。

    解决“SqlServer复制需要有实际的服务器名称才能连接到服务器。不支持通过服务器别名、Ip地址或任何其他备用名称进行连接。”
      
      一:首先看一下,你的默认实例名称和当前的实例名称是否一致,我们在SqlServer2005 Management Studio中新建查询

    SELECT @@SERVERNAME,SERVERPROPERTY('SERVERNAME')

    可以看到查询出来两个不同的结果,说明当先运行的实例不是默认实例。可以通过以下方法将当前运行的实例改为默认实例。

     解决方法一:

    USE master   
    GO
    -- 设置两个变量   
    DECLARE @serverproperty_servername varchar(100),@servername varchar(100)   
    -- 取得Windows NT 服务器和与指定的 SQL Server 实例关联的实例信息   
    SELECT @serverproperty_servername=CONVERT(varchar(100), SERVERPROPERTY('ServerName'))   
    -- 返回运行 Microsoft SQL Server 的本地服务器名称   
    SELECT @servername=CONVERT(varchar(100), @@SERVERNAME)   
    -- 显示获取的这两个参数   
    select @serverproperty_servername,@servername
    --如果@serverproperty_servername和@servername不同(因为你改过计算机名字),再运行下面的   
    --删除错误的服务器名   
    EXEC sp_dropserver @server=@servername
    --添加正确的服务器名   
    EXEC sp_addserver @server=@serverproperty_servername, @local='local'

    解决方法二:

      由于需要需要配置一个发布订阅,可是一直报告:" sql server 复制需要有实际的服务器名称才能连接到服务器,不支持通过别名、ip地址或其他任何备用名称进行连接。请指定实际的服务器名称“xxxx”(Replication Utlities)。"
           经过一番分析发现是在安装完sql server 后修改过机器名称,运行下面两条语句既可以看出来:

    use master
    go
    select @@servernameselect serverproperty('servername')

      如果这两个结果不一致,说明机器改过名字,在配置复制的时候就会报上面的错误。

      要修复此问题,执行下面的语句,完成后重新启动SQL服务   

    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

    最后别忘了重新启动服务哦,启动完后,在运行:

    use master
    go
    select @@servername;
    select serverproperty('servername')

    一切正常,复制也能用了!

     

     

     

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-11-13 10:35 , Processed in 0.068083 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表