我想用TADOConnection连接到局域网内另一台电脑上的SQL Server 2000,在DELPHI IDE界面配置后可正常访问。然后我将ConnectionString中所有参数均保存在INI文件中,读取后在本机可正常访问(用ShowMessage验证和IDE中设置的ConnectionString一样),可是在局域网的另一台机器上用时出现“[DBNETLIB][ConnectionOpen(Connect()).]SQL Server不存在或拒绝访问]”。以下是源代码procedure TDataModule1.DataModuleCreate(Sender: TObject);
var
  MyIniFile: TIniFile;
  sConnectionString: String;
begin
  //打开配置文件
  MyIniFile := TIniFile.Create(AppPathName+'INI\NWP.INI');
  try
    sConnectionString:= 'Provider='+MyIniFile.ReadString('Database','Provider', 'SQLOLEDB.1');
    sConnectionString:= sConnectionString+';Password='+MyIniFile.ReadString('Database','Password', 'abc123');
    sConnectionString:= sConnectionString+';Persist Security Info='+MyIniFile.ReadString('Database','Persist Security Info', 'True');
    sConnectionString:= sConnectionString+';User ID='+MyIniFile.ReadString('Database','User ID', 'nwp');
    sConnectionString:= sConnectionString+';Initial Catalog='+MyIniFile.ReadString('Database','Initial Catalog', 'GLNWP');
    sConnectionString:= sConnectionString+';Data Source='+MyIniFile.ReadString('Database','Data Source', '127.0.0.1');
    sqlGPersonInfo:=sConnectionString;
    ADOConnectionHyzjgl.ConnectionString:=sConnectionString;
    ADOConnectionHyzjgl.CommandTimeout:=5;
    ADOConnectionHyzjgl.Open;
  finally
    MyIniFile.Free;
  end;
end;

解决方案 »

  1.   

    你在控制面板里,新建一个ODBC FOR SQLSERVER的连接,就可以了,虽然你的程序可能不用它,我以前也遇到这个问题,我就是按上面的方法解决的。
      

  2.   

    to lovefox_zoe(爱情狐狸) :
    这是从IDE中Copy下来的,INI文件中已配置成SQL Server所在的机器名了(也试过用地址方式)
      

  3.   

    上面两位说对没错。
    另外,你还可以对AdoConnectionString配置一下服务器看,你用ADO,可以不设ODBC的。
    还建议你把这些信息写到注册表中去,INI文件太老了。
      

  4.   

    lovefox_zoe(爱情狐狸)提醒了我,检查发现读取的机器名不对,改正代码就好了。
    问题已解决,谢谢三位。