方法一:
在配置資料同步的時候,要求相互同步的兩台機器的資料庫必須通過預設執行個體名稱進行串連。如果你的預設執行個體已經刪掉了,在當前執行個體上進行建立發佈動作時候,會提示你:
“由於未在SqlServer的此執行個體上安裝複製組件,Microsoft SQL server 無法訪問這些組件,請參閱SQL Server……”
注意下面還有一個附加的提示,它的意思就是說預設執行個體名和當前的執行個體名稱不一致。其實這個才是導致不能複製的主要原因。把它解決了,你就可以進行複製了。
產生的原因是因為安裝完SqlServer之後,又修改了電腦的名稱。
解決“SqlServer複製需要有實際的伺服器名稱才能串連到伺服器。不支援通過伺服器別名、Ip地址或任何其他備用名稱進行串連。”
一:首先看一下,你的預設執行個體名稱和當前的執行個體名稱是否一致,我們在SqlServer2005 Management Studio中建立查詢
SELECT @@SERVERNAME,SERVERPROPERTY('SERVERNAME')
可以看到查詢出來兩個不同的結果,說明當先啟動並執行執行個體不是預設執行個體。可以通過以下方法將當前啟動並執行執行個體改為預設執行個體。
1 USE master
2 GO
3 -- 設定兩個變數
4 DECLARE @serverproperty_servername varchar(100),
5 @servername varchar(100)
6 -- 取得Windows NT 伺服器和與指定的 SQL Server 執行個體關聯的執行個體資訊
7 SELECT @serverproperty_servername = CONVERT(varchar(100), SERVERPROPERTY('ServerName'))
8 -- 返回運行 Microsoft SQL Server 的本機伺服器名稱
9 SELECT @servername = CONVERT(varchar(100), @@SERVERNAME)
10 -- 顯示擷取的這兩個參數
11 select @serverproperty_servername,@servername
12 --如果@serverproperty_servername和@servername不同(因為你改過電腦名稱字),再運行下面的
13 --刪除錯誤的伺服器名
14 EXEC sp_dropserver @server=@servername
15 --添加正確的伺服器名
16 EXEC sp_addserver @server=@serverproperty_servername, @local='local'
然後重啟sql,運行 SELECT @@SERVERNAME,SERVERPROPERTY('SERVERNAME')
方法二:
由於需要需要配置一個發布訂閱,可是一直報告:" sql server 複製需要有實際的伺服器名稱才能串連到伺服器,不支援通過別名、ip地址或其他任何備用名稱進行串連。請指定實際的伺服器名稱“xxxx”(Replication Utlities)。"
經過一番分析發現是在安裝完sql server 後修改過機器名稱,運行下面兩條語句既可以看出來:
1 use master
2
3 go
4
5 select @@servername;
6 select serverproperty('servername')
如果這兩個結果不一致,說明機器改過名字,在配置複製的時候就會報上面的錯誤。
1 --要修複此問題
2 --執行下面的語句,完成後重新啟動SQL服務
3
4 if serverproperty('servername') <> @@servername
5 begin
6 declare @server sysname
7 set @server = @@servername
8 exec sp_dropserver @server = @server
9 set @server = cast(serverproperty('servername') as sysname)
10 exec sp_addserver @server = @server , @local = 'LOCAL'
11 end
最後別忘了重新啟動服務哦,啟動完後,在運行:
1 use master
2
3 go
4
5 select @@servername;
6 select serverproperty('servername')
一切正常,複製也能用了