2011年10月19日星期三

修改電腦名稱後SQL Server Replication失效解決方法

在公司中,我自己的電腦都會跟Production Server做Replication,當然Server會是Publication,而我是Subscriber。
上星期,我把自己的本機電腦名稱修改,到今天看看Replication Monitor,發現這段時間一直都是"Uninitialized subscription"狀態。
過了一段時間才驚醒自己修改了電腦名稱,故兩者的Connection當然是不同了。
我試過重建,但奈何多次都不成功。上網找答案,原來是SQL Server並沒有記著新的電腦名稱。
下圖中,可見其實SQL Server中,Name與Data Source可以是兩個不同的值。


因為我是選擇"Snapshot replication pull model",故以下一切Command都應該在本機Subscriber電腦做,請注意。
上網爬文,有人說去System Databases中的Master DB,再到System Views中的sys.servers修改記錄。但世事又怎會那麼簡單....
Edit後出現"Ad hoc updates to system catalogs are not allowed."


其實可以執行兩個System SP去做一下檢查:
sp_helpserver - 顯示SQL Server內,已知或已註冊做replication Server的資料。
select @@SERVERNAME - 執行該Query Command的Server名稱。

就以下圖為例,顯然兩者並不一致,所以就要作出修正。


在本地執行以下SQL,目的是把沒有用的Server記錄刪除,再新增正確的Server資料。
sp_dropserver @server='MING-WINDOWS-7'
GO
sp_addserver @server='MingCheung-PC', @local='LOCAL'
GO
執行後,應該就可以重建Replication了。

沒有留言:

發佈留言