我用以下程序,可以实现在本机上进行数据库备份,但是从某一个客户端备份数据库时就出错,why?怎么解决呢,急,在线等var sd:TSaveDialog;
    Adocommand:tAdocommand;
    s_database1,s_backuppath1,s_backupfilename1:string;
    s_server1:string;
begin
sd:=TSaveDialog.Create(self);
Adocommand:=TAdocommand.Create(self);
sd.InitialDir:='c:\';
sd.FileName:=datetostr(now);
if sd.Execute then
 begin
// showmessage(sd.FileName);
 //         sd.:='aa' ;
          s_database1:='WJKSJK';
          s_server1:='jacky';
          s_backupfilename1:=sd.FileName;
          Adocommand.ConnectionString :='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog='+s_database1+';Data Source='+s_server1;
          ADOCommand.CommandText := 'use Master';
          ADOCommand.Execute;
          adocommand.CommandText := 'execute sp_helpdevice';
          adocommand.Execute;
          adocommand.CommandText := 'backup database ' + s_database1 + ' to disk=''' +s_backupfilename1 + ''' with init';
          //adocommand1.CommandText := 'backup database ' + 'BanShanDB' + ' to disk=''' +'c:\data.bak' + ''' with init';
          adocommand.Execute;
          adocommand.CommandText := 'Use ' + s_database1;
          adocommand.Execute;
         application.MessageBox('已经成功备份数据库','数据库备份',MB_OK + MB_ICONINFORMATION);  
 end;
 sd.Free;
 adocommand.Free;

解决方案 »

  1.   

    你的这种方法是不适用于远程备份的。
    你用的是否是sql server7.0/2000,如果是的话可以将备份做到job里面
    如果是oracle8I/9I,那就容易了,可以直接用exp来完成
      

  2.   

    to: pdbird(老巢) 
    有没有办法用程序实现远程备份呢,因为用户提出最好能客户端手工备份
      

  3.   

    客户端安装sqlserver驱动了吗?
      

  4.   

    s_backupfilename1:=sd.FileName;
    @_@
    这里得到的是客户端机器c:\下面的文件,而你的远程备份只能备份到远端服务器的目录
      

  5.   

    adocommand.CommandText := 'backup database ' + s_database1 + ' to disk=''' +s_backupfilename1 + ''' with init';在這句之前, 還要加
    一句類似 xp_cmdshell "net use "
    邊接到對方電腦, 大概思路是這樣
      

  6.   

    同上,局域网中如何把SQL自动备到另一台机上
      

  7.   

    backup database 这句话不管你在什么地方执行,都是和在服务器上执行是一样的,原因是你写的disk参数事实上是SQLSERVER服务器上的路径;
    如果一定要在客户段备份,可以考虑如下方案:
    1、adocommand.CommandText ='backup database ' + s_database1 + ' to disk=''' +SvrPath + ''' with init';将数据备份在数据库服务器上;
    2、通过其他方式从服务器上获得该文件到客户端;可以是FTP等方式。
      

  8.   

    你到PLAYICQ下一个SQL备份的控件就可以了.一句代码就搞定,不用自己怎么麻烦了.
    如果需要可以告诉我你的邮箱,我发給你好了
      

  9.   

    一般只能是服务器备份好了再COPY到客户端的
      

  10.   

    to  fangjx(烟雨缥缈) 
     .cn
     把控件发给我把,解决就给分