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