我的客户端没有安装sql server ,只是在远程的一个服务器上有需要的数据库,我现在想通过ado连接远程的服务器,怎么写。
    我的连接语句是这样,老出错,请大家帮我看看    servername:=combobox1.Text;
    databasename:=combobox2.Text;
    ad:=edit1.Text;
    password:=edit2.Text;    form1.ADOConnection1.Close;    connect:='Provider=SQLOLEDB.1;Password='''+password+''';Persist Security Info=True;User ID='''+ad+''';Initial Catalog='''+databasename+''';';
    connect:=connect+'Data Source='''+servername+''';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID='''+servername+''';Use Encryption for Data=False;Tag with column collation when possible=False';    form1.ADOConnection1.ConnectionString:=connect;    try
      form1.ADOConnection1.Connected:=true;
      showmessage('服务器连接成功!');
      form_server.login:=true;
      form_server.Close;
    except
      messagedlg('服务器连接失败,请检查网络设备是否正常工作,或输入信息是否有误!'+#13+#13+'系统将在2秒后自动关闭。',mtWarning,[mbOk],0);
      sleep(2000);
      //form_server.login:=true;
      //form_server.Hide;
      //application.Terminate;
      //application.run;
      form1.Close;
    end;

解决方案 »

  1.   

    set conn=server.createobject("adodb.connection")
    constr="driver={sql server};pwd=密码;uid=用户名;server=服务器IP;database=数据库名"
    conn.open constr
      

  2.   

    楼上的兄弟,那是asp中连接语法吧?!
    delphi中能用吗?
      

  3.   

    connect:='Provider=SQLOLEDB.1;Password='+password+';Persist Security Info=True;User ID='+ad+';Initial Catalog='+databasename;
      

  4.   

    SQL Server与连接到局域网内服务器每什么差别。只要把服务器名改成相应的IP地址就可了。其他一样。
      

  5.   

    用你的客户端 telnet 你的服务器ip地址 1433
    如果不报错,就能连上
      

  6.   

    你用servername定不行,你应该用IP
      

  7.   

    例:ADOConnection1.connectionstring:='Provider=SQLOLEDB.1;Password='+db_pass+';Persist Security Info=True;User ID='+db_id+';Initial Catalog=VOTE;Data Source='+server+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=xjm;Use Encryption for Data=False;Tag with column collation when possible=False';
      

  8.   

    [other]
    只有window登陆
    Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=jxj;Data Source=ABC混合登陆
    Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=jxj;Data Source=ABC
      

  9.   

    Initial Catalog  就是 数据库名称 
    Data Source         就是 服务器名称
    User ID 登陆用户名
      

  10.   

    好像SQL CLIENT一定要装的。
      

  11.   

    你找个控件能不能连接到?如果能,复制,粘贴connectionstring就行了
      

  12.   

    如果你的程序连接到本机没有问题,那就不需要修改程序了,但是程序本身要有选择服务器的功能.
    从原理上说连接本机和连接远程服务器都是可以的,但有几个地方要注意,
    1 远程服务器的IP地址必须是公网的,如果,远程服务器也在内网,就要使用端口影射,SQL SERVER的端口一般是1433.
    2 最好不要开防火墙,包换WINXP,2003系统自带的
    连接时直接用远程服务器的外网IP就可以了,最好先用SQL的企业管理器或分析器测试一下.
      

  13.   

    www.ConnectionStrings.com 看看去
      

  14.   

    “Provider=SQLOLEDB.1;Password="";Persist Security Info=True;User ID=sa;Initial Catalog=数据库命;Data Source=192.168.0.231”Data Source=192.168.0.231也 可以用计算机名来替换
    User ID=sa
    Password=""
    用可以打开数据库得用户名和密码就行能ping通的就应该能行吧
      

  15.   

    VAR constr1,constr2,constr3,SERVER,UserID,pwd:string;
    SERVER:='ww';--随便
    UserID:='sa';
    constr1:='Provider=MSDASQL;Persist Security Info=False;Extended Properties="DRIVER=SQL Server;SERVER='+SERVER+';UID='+UserID+';APP=Enterprise;WSID='+SERVER+';DATABASE="数据库名';  adoconnection1.Close;
      adoconnection1.ConnectionString:=constr1;
      adoconnection1.ConnectionString:='FILE NAME='+extractfilepath(application.ExeName)+'DATA.udl';--连接服务器选择
      adoconnection1.Open;
      

  16.   

    注:DATABASE=数据库名"';上面打错了。
    data.udl用于选择服务器。应该可以吧!
      

  17.   

    这位兄弟,你是用的几层结构啊?是二层,还是N层(MIDAS)
      

  18.   

    我下面有一个测试连接函数,你可以作为参考:
    function TMainFrm.TestConnect:boolean;
    var Return:Boolean;
    begin
      Return:=false;
      TestCnn.Close;
      TestCnn.LoginPrompt:=false;
      TestCnn.ConnectionString:='Provider=SQLOLEDB.1;Password='+PsdEdt.Text+
                                ';Persist Security Info=True;'+
                                'User ID='+UserEdt.Text+
                                ';Initial Catalog='+DbEdt.Text+
                                ';Data Source='+ServerEdt.Text; 
      try
        TestCnn.Connected:=true;
        Return:=true;
      Except
        Return:=false;
      end;
      TestCnn.Connected:=false;
      Result:=Return;
    end;
      

  19.   

    不需要客户端就只有通过中间层了!
    用DCOMCONNECTION和SOCKETCONNECTION
      

  20.   

    //使用ADO连接远程服务器之前, 必须执行该函数, 否则可能造成连接失败
    procedure SetHost(HostName, HostIP: string);
    var
      Reg: TRegistry;
    begin
      Reg:=TRegistry.Create;
      try
        Reg.RootKey:=HKEY_LOCAL_MACHINE;
        if Reg.OpenKey('Software\Microsoft\MSSQLServer\Client\ConnectTo', True) then
          Reg.WriteString(HostName, 'DBMSSOCN,' + HostIP + ',1433');
        Reg.CloseKey
      finally
        Reg.Free
      end
    end;
      

  21.   

    我也在写差不多相同的程序。
    用一个INI文件可以动态连接服务器,在内网可以实现,但在外网我没有试过, 我也很想知道!关注!