SQL Server 2014下@@SERVERNAME返回NULL值淺析
阿新 • • 發佈:2020-11-20
開發同事反饋在一臺開發伺服器(SQL Server 2014 Developer Edition (64-bit) 12.0.6024.0)上,配置函式@@SERVERNAME返回NULL值。如下截圖所示
其實出現這種問題,配置函式@@SERVERNAME返回NULL,一般是系統檢視sys.servers或sys.sysservers中沒有server_id=0的記錄,檢查這些系統檢視,也確實發現沒有server_id=0的記錄。現在也不清楚誰在上面折騰啥了。
SELECT * FROM sys.sysservers WHERE srvid=0;
SELECT * FROM sys.servers WHEREserver_id=0;
那麼就新增一條這個記錄吧。
DECLARE @server sysname;
SET @server=CAST(SERVERPROPERTY('servername') AS sysname);
EXEC sp_addserver @server=@server,@local='LOCAL';
執行上面指令碼報錯,具體錯誤如下所示,檢查發現原來有開發同事新增了一個連結伺服器(LINKE Server),它的名字跟伺服器命一致。
Msg 15015, Level 16, State 1, Procedure sp_dropserver, Line 63
The server '(null)' does not exist. Use sp_helpserver to show available servers.
Msg 15028, Level 16, State 1, Procedure sp_addserver, Line 95
The server 'xxxx' already exists.
刪除了這個不知哪位同事建立的連結伺服器,然後後面執行上面指令碼後,重啟SQL Server服務後問題搞定。
USE [master]
GO
EXEC master.dbo.sp_dropserver @server=N'xxx', @droplogins='droplogins'--用具體連結伺服器替換xxx
GO