sql server 2005 数据库迁移问题总结——错误 ‘80004005’ 在 sys.servers 中找不到服务器 ‘XXX’

作者: 龙哥 分类: 技术 发布时间: 2018-12-29 11:05 ė1,754 次浏览

SQL2005做转移的过程中遇到此问题,到时为了方便,转移方法直接采用的,停止A服务器,复制A服务器中的数据库,将此数据库加载到B服务器,重启B服务器,有可能这种迁移方法有问题,最后的结果就是,可以正常远程连接数据库,但是当执行rs.update的时候会报错,一般会出现以下现象:

现象一:

Microsoft OLE DB Provider for ODBC Drivers 错误 ‘80004005’

[Microsoft][ODBC SQL Server Driver][SQL Server]在 sys.servers 中找不到服务器 ‘XXX’。请验证指定的服务器名称是否正确。如果需要,请执行存储过程 sp_addlinkedserver 以将服务器添加到 sys.servers。

/fcj/inc/sql.asp,行 186
现象二:

Microsoft OLE DB Provider for ODBC Drivers 错误 ‘80004005’

[Microsoft][ODBC SQL Server Driver][SQL Server]未将服务器 ‘XXX’ 配置为用于 DATA ACCESS。

/fcj/inc/sql.asp,行 186
现象三:

[Microsoft][ODBC SQL Server Driver][SQL Server]此游标不包括正在修改的表,或该表不能通过此游标更新。

后来在网上查找原因,说是这个问题一般存在于sql2005更换服务器后。直接复制的数据库物理文件最多。内部的主机名变更导致。

解决办法:

如果是直接更换的服务器,那么主机名更换了,以前存在数据库的主机名也需要删除。进入SQL2005查询器
执行:
select @@Servername

可以看到现在默认的主机名,如果与现在的主机名不一样,说明主机名更换了
sp_helpserver

可以看到以前的主机名信息。同时可以看到所有的 SQL Server 实例

删除命令:

sp_dropserver @server=’以前的主机名’
添加新主机,假设我现在的主机名是A

sp_addserver @server=’A’,@local=local
这时候会报错:

Microsoft OLE DB Provider for ODBC Drivers 错误 ‘80004005’

[Microsoft][ODBC SQL Server Driver][SQL Server]未将服务器 ‘A’ 配置为用于 DATA ACCESS。

/fcj/inc/sql.asp,行 186
设置模式:

USE master
EXEC sp_serveroption ‘A’, ‘data access’, ‘on’
可能会遇到:

[Microsoft][ODBC SQL Server Driver][SQL Server]此游标不包括正在修改的表,或该表不能通过此游标更新。
一般重新启动sql2005服务(或重启服务器),问题解决。

但是我的重启后依旧没有解决问题,于是我做了以下探索:

select @@Servername

返回值是null,这个时候当我执行

EXEC sp_dropserver @@servername

就报错说主机名null不存在

于是我直接sp_helpserver 看到了所有的SQL实例,然后删除了所有的实例(A、B、C),依次执行以下命令

EXEC sp_dropserver “A”

EXEC sp_dropserver “B”

EXEC sp_dropserver “C”

接着添加新的主机名:

EXEC sp_addserver “new\SQL2005”,local

设置模式:

USE MASTER;
GO
EXEC sp_serveroption ‘new\SQL2005′,’data access’,’on’;
GO

重启SQL服务器:打开SQL2005外围应用配置器—>服务和连接的外围应用配置器,选择MSSQLSERVER,点击停止—>启动。

问题得以解决!

本文出自 俞凌龙博客,转载时请注明出处及相应链接。

本文永久链接: https://blog.jlwz.cn/196

Ɣ回顶部