To:Yang_(扬帆破浪) 
   我在自己的机器上(装了Delphi)运行、连接一切正常,但是换到其他机器上就报上面的错误,
   对了,需要安装什么样的连接组件?

解决方案 »

  1.   

    试试这三个文件:
    dbnetlib.dll、dbnmpntw.dll、ntwdblib.DLL(PB客户端可以的)
    放到客户端可执行程序下
      

  2.   

    To supsuccess:试过了,不行。
          请大家帮帮我!马上准备试运行,我总不能在每台客户端上安装一个Delphi吧
      

  3.   

    难道Delphi的搜索路径跟PB不同?
    放到Windows的系统目录(System / System32)底下怎样?
    试试TCP/IP协议?到Delphi论坛去搜搜看?
      

  4.   

    To supsuccess:
       试过了,放到系统目录也不行,我使用的就是TCP/IP协议。
       这个问题,我在Delphi论坛,求助过,都没解决。
      

  5.   

    安装SQLServer2000中的客户端连接工具;也可以把dbnetlib.dll、dbnmpntw.dll、ntwdblib.DLL这三个文件拷贝到运行目录或system目录下,不过在不同的网段中访问时需要在注册表中注册:HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\ConnectTo,其中键值名为:DSQUERY,键值为:DBNETLIB;还有就是你需要注意在连接字符串中设置的服务器名是否正确,我刚好做了这么一个,一切正常,若有问题请继续提出。
      

  6.   

    To: supsuccess(口气不小) 采用Ado连接。
    To: yxiner():
        首先,谢谢你的热情帮助。
        你讲的三个文件,我试过放到客户端机器的system目录下,但没有用。
        现在,我又没有办法试你的方法。能不能给我讲讲关于客户端连接的详细
    知识。小弟不胜感激!
      

  7.   

    可以用ADO的连接字串属性自动生成连接字符串,我为了通用,专门建立了一个连接字串的数据模块,使用ADO的ADOConnection控件,用连接字串变量给ConnectionString属性赋值即可。我设置的连接字串例子是:
    var
      sPaswd,
      sServer,
      ADataSource,
      ConnectStr:String;
    begin
      sPaswd:='Password=123;Persist Security Info=True;';
      sServer:='Data Source='+sServer;
      ADataSource:='User ID=sa;Initial Catalog=XSXX;';
      ConnectStr:=Concat(sProvider,sPaswd,ADataSource,sServer);
      try
        with adconnect do
        begin
          Connected:=False;
          ConnectionString:=ConnectStr;
          Connected:=True;
        end;
      except
        Application.MessageBox(PChar('不能打开数据库,请确认网络联接正常'+#13+
        '或与管理员联系启动服务端程序,请稍后再试。'),'提示:',MB_ICONERROR);
       end;    其中sPaswd为登录数据库的密码,我使用的是默认的登录用户sa,当然可以设为你在SQLServer2000中设置的用户;sServer为登录的数据库服务器,即你安装SQLServer2000的机器名,我为了在客户端能灵活地设置数据服务器,因此我把服务器名写入注册表,如果不能正常访问,则弹出窗口重设服务器并测试连接;Initial Catalog=XSXX中的XSXX应改为你的数据库名。
        以上过程应在客户端的Delphi环境下测试通过,再编译运行正常最后才涉及到发布问题。  
      

  8.   

    你刚才讲的我都知道,我在设计时,还加入了调用连接字符串的模块,所以在客户端的上面,我可以打开AdoConnection的AdoConnectionString的属性对话框,在该对话框中,我也是打开出错。
      

  9.   

    To:yxiner() 
      1.网络通
      2.开发环境中连通了,能正常使用,只是我是说在其他机器上调用Adoconnectionstring 对话框不通.
      3.服务器运行了,在开发环境中一切正常.
      

  10.   

    我还遇到一种情况是:我使用SQLServer2000的个人版,安装在WIN98下,客户端不能正常访问,只能在本地访问。
        当然,从你提供的是 DBNMPNTW 拒绝访问,我看了一下,你在客户端可能使用的是 Named Pipes 协议,而TCP/IP协议应提示DBNETLIB 拒绝访问,请你在任一客户端安装一个SQLServer2000的客户端连接工具,查看一下里面的有效协议并测试一下。
      

  11.   

    我已下班,如果还有问题请给我发邮件[email protected],我们一起共同讨论。