這個是sysserver系統表里顯示的服務器名:
這個是本機的實例名:我搭建同步複製時,報錯如下:我估計是就是搬過VM,並且VM所在的PC名不同。但是有這些實例就沒有問題,只有其中一兩個出現這樣的問題。請下問,如何解決,並且原因大概是什麽?

解决方案 »

  1.   

    --使用下面的代码重新添加当前SQL Server实例的信息,处理完成后,应该重新启动MSSQLSERVER服务使修改生效。
    DECLARE @srvname sysname
    SET @srvname=CAST(SERVERPROPERTY('ServerName') as sysname)
    IF NOT EXISTS(SELECT * FROM master.dbo.sysservers WHERE srvname=@srvname)
        EXEC sp_addserver @server = @srvname , @local = 'LOCAL'
    --执行下面的代码,将@@SERVERNAME的值修改为与SERVERPROPERTY('ServerName')一样即可。修改完成后,需要重新启动MSSQLSERVER服务使修改生效。
    IF SERVERPROPERTY('ServerName')<>@@SERVERNAME
    BEGIN
        DECLARE @srvname sysname
        SET @srvname=@@SERVERNAME
        EXEC sp_dropserver @server=@srvname
        SET @srvname=CAST(SERVERPROPERTY('ServerName') as sysname)
        EXEC sp_addserver @server = @srvname , @local = 'LOCAL'
    END
      

  2.   

    sysserver系統表里顯示的服務器名:
       VM163\SQL2005DE3
    這個是本機的實例名:
       VM171\SQL2005DE3我搭建同步複製時,報錯如下:
       SQL SERVER 複寫需要有實際的伺服器名稱才能連接到伺服器。不支援透過伺服器別名,IP位址或任何其他期待名稱來進行連接。請指定實際的伺服器名稱,'VM163\SQL2005DE3'
      

  3.   


    感謝1樓,我之前只執行了addserver,沒有dropserver。現在把之前的實例名刪除了,就解決問題了。
    還有把‘SERVERPROPERTY()’去掉
      

  4.   

     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