在配置數據同步的時候,要求相互同步的兩台機器的數據庫必須通過默認實例名稱進行連接。如果你的默認實例已經刪掉了,在當前實例上進行新建發布操作時候,會提示你:“由於未在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 @@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')
一切正常,復制也能用了!