sql server 2005 数据库迁移问题总结——错误 ‘80004005’ 在 sys.servers 中找不到服务器 ‘XXX’
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