我的DELPHI程序使用如下代码连接:  try
    password := '111111';
    user := '111111';
    server := 'aaa-PC\SQLEXPRESS';
    //server := 'aaa-PC';
    database := 'ddddd';    conSQLstr := 'Provider=SQLOLEDB.1; Password='+Password+';Persist Security Info=True;User Id= '+user+ ';Data Source= '+server+ ';Initial Catalog= '+database+ ';';
    conSQL := TADOConnection.Create(nil);
    conSQL.ConnectionString := conSQLStr;
    conSQL.Open;    result := true;
    SQLConnectioned := true;
  except
    result := false;
    SQLConnectioned := false;
  end;但,在客户端上运行,连接不上SQL SERVER,而必须在WINDOWS 的 ODBC数据源管理器 里添加上一个 DSN 才能连上?为什么添加上,成功连上,以后,将这个DSN删除掉程序又是正常可以连接的?我的目的是,用户无须手动添加 DSN,可行吗?谢谢

解决方案 »

  1.   

    教你一个非常简单的办法:1、你在桌面上新建一个文本文件(不会创建?),然后将文件扩展名.txt改为.udl,然后双击该文件,打开一个“数据链接属性”对话框。
    2、选择“提供程序”选项卡,再选择其中的“Microsoft OLE Provider for SQL Server”,然后“下一步”。
    3、在“连接”选项卡下,输入SQL Server数据库服务器名(即: aaa-PC\SQLEXPRESS)与登录密码。再在下面的下拉列表中,选择你要连接的数据库。
    4、点击“确定”
    5、用“记事本”打开上述.udl文件,将其中的“Provider=SQLOLEDB.1;Persist Security。。”赋值给conSQL.ConnectionString 就行了。至此,你的目的达到了:用户无须手动添加 DSN 。最后,建议你不要指定SQL Server数据库服务器名称,而改用(local),因为将你开发的程序安装到别的机器上时,默认的SQL Server数据库服务器名称跟你开发时所用的机器上的名称不同,这样又会出现无法连接数据库的错误。
      

  2.   

    谢谢楼上的帮助,也学到了一种新的方法。但,此方法得出来的连接字符串与我本身程序的一样喔。我的 SQL SERVER 是设置为 TCP/IP  ALL端口,TCP动态 50000,TCP:1433在客户端上,还是要手工在WINDOWS添加 DSN。而且,奇的是在服务器那机器里如果数据库服务器名使用aaa-PC\SQLEXPRESS 可以直接连接上,但如果使用aaa-PC 则要添加DSN才能接上。为什么,DSN添加成功连接后,以后删除了也可以运行?
      

  3.   

    使用连接字符串来连接数据库,是不需要建立DNS的,这个是毫无疑问的。“在客户端上,还是要手工在WINDOWS添加 DSN”? 客户机上只需要指定所连接的数据库服务器的IP地址及数据库服务器名称,并保证与服务器网络连通就OK了,根本不需要创建什么DNS !数据库服务器上倒是要进行一些设置: 
    1、SQL Server的登录方式:改为SQL Server方式,而不要用Windows NT 认准方式。
    2、关闭防火墙。