由于我无法控制的原因,我必须找到解决此问题的方法。简单地重新安装实例不是一种选择。在 sys.servers 中显示为 server_id 0 的服务器名称仍显示旧的服务器名称。
运行以下命令时出现错误:
sp_dropserver 'OLD_INSTANCE'
GO
sp_addserver 'NEW_INSTANCE', Local
GO
错误信息:
消息 15190,级别 16,状态 1,过程 sp_dropserver,第 67 行
服务器“OLD_INSTANCE”仍有远程登录或链接登录。
消息 15028,级别 16,状态 1,过程 sp_addserver,第 87 行
服务器“NEW_INSTANCE”已经存在。
最奇怪的是,远程登录是“空”登录。
exec sp_dropremotelogin @remoteserver = 'OLD_INSTANCE'
go
错误信息:
消息 15185,级别 16,状态 1,过程 sp_dropremotelogin,第 70 行
没有从远程服务器 'OLD_INSTANCE' 映射到本地用户 '(null)' 的远程用户 '(null)'。
旧实例不存在登录名。
sp_helpremotelogin 'OLD_INSTANCE'
消息 15201,级别 16,状态 1,过程 sp_helpremotelogin,第 37 行
远程服务器“OLD_INSTANCE”没有远程登录。
如果我无法删除不存在的登录名,如何重命名此实例?有没有办法刷新登录名?
您需要同时检查
sys.remote_logins
和sys.linked_logins
。您应该能够动态构建脚本以删除您找到的集合:我不得不发布,因为这给了我今天重命名 SQL2014 默认实例的最大帮助......
您还可以使用以下内容:
这绝对救了我今天的培根。感谢您的这篇文章,我希望我的也可以帮助其他人。
上下文:从 SQL2008 故障转移到新安装的 SQL2014。有一些生产 SQL 机器根据我们的软件提供商的规范链接。
我试图重命名 2014 服务器以匹配 2008 服务器的 IP 和名称(已更改为不同的名称),但不断收到远程/链接登录存在的错误。
经过大量搜索后,@droplogins 命令起作用了。
我希望这对将来的某人有所帮助。