服务器情况说明:服务器 A 的数据库版本(select @@version)
Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)   Oct 14 2005 00:33:37   Copyright (c) 1988-2005 Microsoft Corporation  Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2) 服务器 B 的数据库版本(select @@version)
Microsoft SQL Server  2000 - 8.00.194 (Intel X86)   Aug  6 2000 00:57:48   Copyright (c) 1988-2000 Microsoft Corporation  Personal Edition on Windows NT 5.0 (Build 2195: Service Pack 4) 出现的问题说明:
1、我在A服务器上注册远程服务器B
exec sp_dropserver  'HRServer', 'droplogins' 
exec sp_addlinkedserver   'HRServer', '', 'SQLOLEDB', '10.101.166.38'
exec sp_addlinkedsrvlogin  'HRServer', 'false', null, 'sa', 'buaa369' 2、这时在A服务器上查询B数据库中数据:
        select top 1 * from HRServer.testdb.dbo.a
执行较长时间(46秒)后,出现如下错误:
OLE DB provider "SQLNCLI" for linked server "hrserver" returned message "Login timeout expired".
OLE DB provider "SQLNCLI" for linked server "hrserver" returned message "An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.".
消息 53,级别 16,状态 1,第 0 行
Named Pipes Provider: Could not open a connection to SQL Server [53]. 
说明:
如果我在A服务器上通过企业管理器,连接到B服务器,用上面对应的帐号密码登陆没有问题,再执行如下脚本:
use testdb
go
select top 1 * from [a]
执行没有任何问题。时间不到1秒请问这是什么问题啊??有什么办法可以解决??
先把问题贴出来,求各位的解决方法。
下周再按各位的办法试(办公环境下有此问题,休假了就试不成了)

解决方案 »

  1.   

    参考这个帖子:http://topic.csdn.net/u/20090624/16/407ca38f-ecdc-4bde-bbe4-3c2daa7b589f.html
      

  2.   

    服务器 A 的数据库版本(select @@version) 
    Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)  Oct 14 2005 00:33:37  Copyright (c) 1988-2005 Microsoft Corporation  Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2) 服务器 B 的数据库版本(select @@version) 
    Microsoft SQL Server  2000 - 8.00.194 (Intel X86)  Aug  6 2000 00:57:48  Copyright (c) 1988-2000 Microsoft Corporation  Personal Edition on Windows NT 5.0 (Build 2195: Service Pack 4)先把SP4装上先
      

  3.   

    194是SP2,默认安装时的。
    建议楼主必须把SP4补丁打上!
      

  4.   

    服务器 B 的数据库版本(select @@version) 
    Microsoft SQL Server  2000 - 8.00.194 (Intel X86)  Aug  6 2000 00:57:48  Copyright (c) 1988-2000 Microsoft Corporation  Personal Edition on Windows NT 5.0 (Build 2195: Service Pack 4) 后面已经显示是SP4了呢,难道这个显示的东西与实际不一样吗??我对这个确实不清楚。
      

  5.   

    专门到网上搜了一下sqlserver版本号的问题,在这儿找到http://www.weste.net/2006/4-11/09322435963.html8.00.194 SQL Server 2000 RTM 
    8.00.384 SQL Server 2000 SP1 
    8.00.534 SQL Server 2000 SP2 November 30th, 2001 
    8.00.760 SQL Server 2000 SP3 
    8.00.2039 SQL Server 2000 SP4看来确实是补丁没打,,,,,不过,我感到奇怪的是,为何我用select @@version看到的内容中有Service Pack 4的字符呢
    各位能帮我解答一下吗??
      

  6.   

    不行呐今天费了好大劲(时间耗在走申请流程)把SP4补丁打上,继续查询:
    select top 1 * from hrserver.testdb.dbo.a结果出现同样的错误:
    OLE DB provider "SQLNCLI" for linked server "hrserver" returned message "Login timeout expired".
    OLE DB provider "SQLNCLI" for linked server "hrserver" returned message "An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.".
    消息 53,级别 16,状态 1,第 0 行
    Named Pipes Provider: Could not open a connection to SQL Server [53]. 
    是怎么回事啊??
    是不是还有其它原因??
      

  7.   

    打完SP4补丁后, 使用:Select @@version
    查询结果:
    Microsoft SQL Server  2000 - 8.00.2039 (Intel X86)   May  3 2005 23:18:38   Copyright (c) 1988-2003 Microsoft Corporation  Personal Edition on Windows NT 5.0 (Build 2195: Service Pack 4) 使用:SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
    查询结果为:
    8.00.2039 SP4 Personal Edition