2008年12月4日 星期四

SQL Server 2005電腦名稱改變導致無法作複寫Replication(新增發行集時)

發生原因:最近要測試SQL Server 2005的複寫功能(發行與訂閱),以解決公司現行環境中有多台SQL Server間要排程作SSIS轉檔的問題,但是在當我要在發行端的主機上要作新增發行集的工作時,錯誤訊息出現了。

錯誤訊息:
SQL Server無法連接到伺服器'NewServerName'
其他資訊:
SQL Server 複寫需要有實際的伺服器名稱才能連接到伺服器。不支援透過伺服器別名、IP 位址或任何其他替代名稱來進行連接。請指定實際的伺服器名稱,'OldServerName'。 (Replication.Utilities)

問題追查:錯誤訊息中的'NewServerName'是現在這台主機的電腦名稱,'OldServerName'是我沒見過的電腦名稱,剛看到錯誤息時,我以為是我在hosts檔中設的主機名稱有誤,但是檢查過都沒錯呀!我印象中好像之前的同事有跟我問過要幫這裡SQL Server改主機名稱的事(我之前是待SI公司,後來公司倒了,我就輾轉轉到以前的客戶公司上班),經詢問後才知道,的確當初這台主機在灌完SQL Server後有改過電腦名稱。我下了以下SQL的指令確認:
Select @@ServerName
出來的結果確實是OldServerName


解決方法:我印象中SQL Server 2000要改電腦名稱的步驟是很複雜的,不然改完後SQL Server會無法啟動,SQL Server 2005我就不確定了,我想是不是以前的同事漏了那個步驟,導致現在的問題,所以就上微軟找KB囉!結果發現SQL Server 2005要改電腦名稱超簡單,3個步驟搞定:
1.直接先改電腦名稱,改完重開(其實重開完SQL Server就可以用了,當初前同事就只作到這)
2.下SQL指令  sp_DropServer OldServerName
3.一樣下SQL  sp_AddServer NewServerName,Local
搞定結案!

PS.寫這篇花的時間比我解決這個問題的時間還長耶!怎麼會這樣,打字太慢了嗎?