代码改变世界

SQL Server 2014下@@SERVERNAME返回NULL值浅析

  潇湘隐者  阅读(792)  评论(0编辑  收藏  举报

开发同事反馈在一台开发服务器(SQL Server 2014 Developer Edition (64-bit) 12.0.6024.0)上,配置函数@@SERVERNAME返回NULL值。如下截图所示

 

 

clip_image001

 

其实出现这种问题,配置函数@@SERVERNAME返回NULL,一般是系统视图sys.servers或sys.sysservers中没有server_id=0的记录,检查这些系统视图,也确实发现没有server_id=0的记录。现在也不清楚谁在上面折腾啥了。

 

SELECT * FROM sys.sysservers WHERE srvid=0;
SELECT * FROM sys.servers WHERE server_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
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2018-11-20 ORACLE中如何查找定位表最后DML操作的时间小结
2014-11-20 ORACLE查看SQL的执行次数/频率
点击右上角即可分享
微信分享提示