2026年9月1日 星期二

[研究]SQL Server 伺服器 [伺服器名稱] 的 嘗試擷取物件的資料 失敗。

[研究]SQL Server 伺服器 [伺服器名稱] 的 嘗試擷取物件的資料 失敗。

2026-09-01


標題: Microsoft SQL Server Management Studio

主要錯誤: 伺服器 [伺服器名稱] 的 嘗試擷取物件的資料 失敗。(Microsoft.SqlServer.Smo)

其他資訊: 伺服器層級的 Urn 篩選無效: 篩選必須是空的,或者伺服器屬性必須與真實的伺服器名稱相等。(Microsoft.SqlServer.Smo)

********************************************************************************

錯誤代表的意思

當 Windows 作業系統修改過主機名稱(Computer Name),但 SQL Server 內部的伺服器元資料(@@SERVERNAME)尚未更新時,SQL Server Management Studio (SSMS) 透過 SMO (SqlServer.Smo) 進行物件擷取(例如展開伺服器屬性、查看作業或資料庫物件)時,會發現連線名稱與實際內部記錄的伺服器名稱不符,從而跳出此錯誤。

解決方法

透過 SQL 語法修改內部記錄的伺服器名稱並重新啟動 SQL Server 服務即可解決。

確認名稱不一致問題

開啟 SSMS 連結至該 SQL Server,執行以下查詢:


SELECT @@SERVERNAME , SERVERPROPERTY('ServerName') ;

SELECT @@SERVERNAME AS [SQL Server 紀錄名稱], SERVERPROPERTY('ServerName') AS [實際主機名稱];

若兩者顯示的名稱不相同,即為導致此錯誤的原因。

刪除舊名稱並新增正確名稱

在 SSMS 執行以下指令(將 '舊伺服器名稱' 與 '新伺服器名稱' 替換為步驟 1 查出的對應名稱):


-- 刪除舊的伺服器名稱紀錄 EXEC sp_dropserver '舊伺服器名稱';

實際測試成功


-- 新增當前正確的伺服器名稱 EXEC sp_addserver '新伺服器名稱', 'local';

實際測試成功

開啟 SQL Server Configuration Manager 或 Windows 服務 (services.msc)。

找到對應的 SQL Server (MSSQLSERVER) 服務並點擊 重新啟動 (Restart)。

驗證結果

重啟後重新連線,再次執行 SELECT @@SERVERNAME; 確認是否已更新為正確名稱。確認無誤後,即可正常讀取物件與屬性頁面。

***

敝人實際測試成功。注意,sp_addserver有個 'local' 參數。

(完)

沒有留言:

張貼留言