Windows 伺服器重裝或變更電腦名稱後,SQL Server 內部 sys.servers 仍保留舊名稱,導致連結伺服器、遠端查詢、複寫等功能失效,錯誤訊息:在 sys.servers 中找不到伺服器 'BBB'。請驗證指定的伺服器名稱是否正確。如果需要,請執行預存程序 sp_addlinkedserver 以將伺服器加入 sys.servers。
sys.servers (name = @@SERVERNAME)@@SERVERNAME 仍回傳舊名稱,導致內部邏輯判斷失敗SELECT * FROM sys.servers;
GO
記錄舊名稱 (如 AAA) 與現有名稱 (如 BBB)
EXEC sp_dropserver 'AAA'; GO
EXEC sp_dropserver 'BBB'; GO
若 BBB 不存在會報錯可忽略,目的是確保乾淨狀態。
EXEC sp_addserver 'BBB'; GO
EXEC sp_addserver 'BBB', 'local', 'duplicate_OK'; GO
@local = 'local'),允許重複名稱 (duplicate_OK)EXEC sp_serveroption 'BBB', 'data access', 'true'; GO
必須重啟 SQL Server 服務 (MSSQLSERVER) 使變更生效。
SELECT @@SERVERNAME; -- 應回傳 BBB
SELECT * FROM sys.servers; -- name 應為 BBB, is_local = 1
sp_dropserver 若有遠端登入連結,需加 'droplogins' 參數:EXEC sp_dropserver 'name', 'droplogins'[ ] 變更電腦名稱前,先執行 sp_dropserver 舊名稱
[ ] 變更後立即執行 sp_addserver 新名稱 local
[ ] 變更電腦名稱視同基礎架構變更,納入變更管理流程
[ ] 保留此腳本於 DBA 執行手冊中