首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> SQL Server 2005

SQL Server 2005 伺服器重裝改名後 sys.servers 不同步解決方案

     編輯:SQL Server 2005

Windows 伺服器重裝或變更電腦名稱後,SQL Server 內部 sys.servers 仍保留舊名稱,導致連結伺服器、遠端查詢、複寫等功能失效,錯誤訊息:
在 sys.servers 中找不到伺服器 'BBB'。請驗證指定的伺服器名稱是否正確。如果需要,請執行預存程序 sp_addlinkedserver 以將伺服器加入 sys.servers。

問題根因

  • SQL Server 安裝時將電腦名稱寫入 sys.servers (name = @@SERVERNAME)
  • 作業系統電腦名稱變更 (AAA → BBB) 不會自動同步至 SQL Server 系統目錄
  • @@SERVERNAME 仍回傳舊名稱,導致內部邏輯判斷失敗

解決步驟 (四步驟 T-SQL)

步驟 1:查詢目前 sys.servers 內容

SELECT * FROM sys.servers;
GO

記錄舊名稱 (如 AAA) 與現有名稱 (如 BBB)

步驟 2:移除舊與新名稱的伺服器記錄

EXEC sp_dropserver 'AAA'; GO
EXEC sp_dropserver 'BBB'; GO
若 BBB 不存在會報錯可忽略,目的是確保乾淨狀態。

步驟 3:新增正確的本地伺服器記錄

EXEC sp_addserver 'BBB'; GO
EXEC sp_addserver 'BBB', 'local', 'duplicate_OK'; GO
  • 第一行:加入一般伺服器記錄
  • 第二行:標記為 本地伺服器 (@local = 'local'),允許重複名稱 (duplicate_OK)

步驟 4:啟用資料存取並重啟服務

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'
  • 叢集環境需在所有節點執行,並確認虛擬網路名稱正確
  • 若有複寫/連結伺服器/作業引用舊名稱,需同步更新
  • SQL Server 2005/2008/2012/2014/2016/2019 通用

預防建議

[ ] 變更電腦名稱前,先執行 sp_dropserver 舊名稱
[ ] 變更後立即執行 sp_addserver 新名稱 local
[ ] 變更電腦名稱視同基礎架構變更,納入變更管理流程
[ ] 保留此腳本於 DBA 執行手冊中
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved