伺服器名稱變更(如主機改名)後,@@SERVERNAME 仍保留舊值,需手動同步。標準流程兩步驟,但複寫環境需額外處理分發者清理。
-- 1. 刪除舊伺服器登錄
EXEC sp_dropserver @server = 'OLD_SERVER_NAME';
-- 2. 新增新伺服器登錄並標記為本地
EXEC sp_addserver @server = 'NEW_SERVER_NAME', @local = 'LOCAL';
-- 3. 重啟 SQL Server 服務生效
若執行 sp_dropserver 報錯:
無法刪除伺服器 'OLD_NAME',因為該伺服器用作複寫過程中的分發伺服器
需先移除分發者角色:
EXEC sp_dropdistributor @no_checks = 1, @ignore_distributor = 1;
GO
-- 再執行標準流程
EXEC sp_dropserver @server = 'OLD_SERVER_NAME';
EXEC sp_addserver @server = 'NEW_SERVER_NAME', @local = 'LOCAL';
-- 重啟服務
-- 檢視 sys.servers 確認變更
SELECT * FROM sys.servers;
-- 確認 @@SERVERNAME 新值
SELECT @@SERVERNAME;
master 資料庫掌握標準流程與複寫例外處理,確保伺服器身份變更零風險。