裝完sql server 後修改計算機名後不能進行發佈的訂閱的解決辦法

方法一:

在配置數據同步的時候,要求相互同步的兩臺機器的數據庫必須通過默認實例名稱進行連接。如果你的默認實例已經刪掉了,在當前實例上進行新建發佈操作時候,會提示你:
  “由於未在SqlServer的此實例上安裝複製組件,Microsoft SQL server 無法訪問這些組件,請參閱SQL Server……”

注意下面還有一個附加的提示,它的意思就是說默認實例名和當前的實例名稱不一致。其實這個纔是導致不能複製的主要原因。把它解決了,你就可以進行復制了。
   
  產生的原因是因爲安裝完SqlServer之後,又修改了計算機的名稱。

  解決“SqlServer複製需要有實際的服務器名稱才能連接到服務器。不支持通過服務器別名、Ip地址或任何其他備用名稱進行連接。”
 
  一:首先看一下,你的默認實例名稱和當前的實例名稱是否一致,我們在SqlServer2005 Management Studio中新建查詢

    SELECT @@SERVERNAME,SERVERPROPERTY('SERVERNAME')

可以看到查詢出來兩個不同的結果,說明當先運行的實例不是默認實例。可以通過以下方法將當前運行的實例改爲默認實例。

 

<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->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,運行 SELECT @@SERVERNAME,SERVERPROPERTY('SERVERNAME')

 

方法二:

由於需要需要配置一個發佈訂閱,可是一直報告:" sql server 複製需要有實際的服務器名稱才能連接到服務器,不支持通過別名、ip地址或其他任何備用名稱進行連接。請指定實際的服務器名稱“xxxx”(Replication Utlities)。"

       經過一番分析發現是在安裝完sql server 後修改過機器名稱,運行下面兩條語句既可以看出來:

       use master

      go

      select @@servername;
      select 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')

一切正常,複製也能用了!

 


轉自:http://xiaoyu1985ban.iteye.com/blog/1123163

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章