之前安装数据库的时候,默认的是机器名A,然后装完后我设置过数据库发布即[复制]里面的[本地发布]
后来我又把机器名改了,但是平时登陆数据库都是用ip登陆的
今天我要设置一个新的发布,但是发现只能用实例名登陆,不允许用ip登陆数据库
但是我之前改过机器名,安装数据库的时候服务名默认就是机器名,但是现在两个已经不一样了
所以我需要修改实例名,但是发现修改不了,一直提示:
"仍有对服务器的远程登录或链接登录"
找来找去,都没有找到谁登陆了! 后来才发现,之前有过本地发布的原因导致的!
所以我要删除原先的本地发布,但是又删除不了,暂时没找到解决方法(这里只能先改回原来的机器名,然后删除旧的本地发布,然后重新改回新的机器名)
然后再重新修改服务名称,又报错:
" 无法删除服务器 'old_server_name',因为该服务器用作复制过程中的发布服务器。 (Microsoft SQL Server,错误: 20582) "
最后找到的解决方法如下:
计算机名修改后,SQL Server 服务器名称 与 计算机名不一致。
1. 检查SQL Server 的服务器名称
use master
go
select @@servername
select serverproperty('servername')
2.删除所有之前配置的publishers('old_server_name'为之前的服务名)
select * from msdb.dbo.MSdistpublishers
DELETE FROM msdb.dbo.MSdistpublishers
select * from msdb.dbo.MSdistpublishers
exec sp_droplinkedsrvlogin 'old_server_name',null
exec sp_dropserver 'old_server_name', 'droplogins'
执行完后,重启SQL Server服务
3.配置计算机名与服务名一致
USE master
GO
if serverproperty('servername') <> @@servername
begin
declare @server sysname
set @server = @@servername
exec sp_dropserver @server = @server
set @server = cast(serverproperty('servername') as sysname)
exec sp_addserver @server = @server , @local = 'LOCAL'
end
4.查看服务名
sp_helpserver