计算机改名后,SQL数据库不能登录问题的解决方法。

1.用sa登录
数据库为master中新建查询

select from sys.sysservers

进行查询可发现数据库中还保留着之前的计算机名
2.在输入以下进行删除以原计算机名字进行登录的信息

EXEC sp_dropserver "原计算机名字"

点击执行后 再输入:select from sys.sysservers 进行验证,可发现已经查找不到信息了。

3.输入:EXEC SP_ADDSERVER "改后的计算机名字","LOCAL"

点击运行后,在进行查询

sqlServer 更改 服务器名的问题

机器名与实例名不同,解决办法

在执行 exec sp_addlinkedserver 'DMGZSRV10' 的时候一直提示

消息 15190,级别 16,状态 1,过程 sp_dropserver,第 56 行
仍有对服务器 'DMGZSRV10' 的远程登录或链接登录。

又执行

exec sp_dropserver 'DMGZSRV10', 'droplogins'

这时提示

无法删除服务器 ‘LC04’,因为该服务器用作复制过程中的发布服务器。 (Microsoft SQL Server,错误: 20582)

下面是解决的方案

原始状态

1、服务器名LC04 MSSQL实例名MSSQLSERVER

2、在LC04上建立了发布,在另一台服务器上订阅或者用SQLServer管理器远程访问LC04上的SQLServer,出现错误:
无法连接到 LC04。


其他信息:

在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,
在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 
(provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)
 (Microsoft SQL Server,错误: 53)

解决处理

将LC04的计算机名称改为MSSQLSERVER与MSSQL实例名相同
此时状态

SQLServer管理器远程可以访问LC04的数据库,但不能订阅,出现错误:

SQL Server 复制需要有实际的服务器名称才能连接到服务器。
不支持通过服务器别名、IP 地址或任何其他备用名称进行连接。
请指定实际的服务器名称“LC04”。 (Replication.Utilities)

解决处理

在LC04(现在应当名为MSSQLSERVER)的服务器上,执行如下代码

SELECT @@SERVERNAME ,serverproperty('servername')

发现两个不同,分别为LC04和MSSQLSERVER

执行如下代码

exec sp_droplinkedsrvlogin 'LC04',null
exec sp_dropserver 'LC04','droplogins'
exec sp_addserver 'MSSQLSERVER' , 'LOCAL'

出现错误
无法删除服务器 ‘LC04’,因为该服务器用作复制过程中的发布服务器。 (Microsoft SQL Server,错误: 20582)

解决处理

select * from msdb.dbo.MSdistpublishers
DELETE FROM msdb.dbo.MSdistpublishers
select * from msdb.dbo.MSdistpublishers
exec sp_droplinkedsrvlogin 'LC04',null
exec sp_dropserver 'LC04','droplogins'
exec sp_addserver 'MSSQLSERVER' , 'LOCAL'

重启SQLServer服务

设置发布服务器属性,发现发布服务器的服务器名还是为LC04,造成发布执行错误:

在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,
在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。
 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) 
 (Microsoft SQL Server,错误: 53)

使用 exec sp_helpserver 发现name为repl_distributor的服务器的network_name还是LC04

解决处理

执行

exec sp_setnetname 'repl_distributor','MSSQLSERVER'

再次设置发布服务器,并发布,完成

实际上在SQLServer和其他应用中还有可能用到原有的数据库名LC04
可以建立SQLServer的新别名为LC04,这样基本上都可以解决了