偶用DELPHI滴ADOQuery写滴备份数据库里某张表滴数据里碰到滴问题
源程序如下:
procedure TForm1.BackEmpClick(Sender: TObject);
var
  a,str,str1:string;
  FileNam:string;
begin
  AQ_query.SQL.Clear;
  str:='''bcp "lamsun..employee" Out';  //  
  str1:=' '+'-c -Usa''';              //连接数据库用户。 
  a:='EXEC master..xp_cmdshell'+' ';  //启动SQL备份表滴存储过程
  AQ_query.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User   ID=sa;Initial Catalog=baoyangb;Data Source=ntserver';
  SaveDialog1.Filter:='*.txt|*.txt';
  IF SaveDialog1.Execute then
    begin
      FileNam:=SaveDialog1.Filename;  //把数据表备份成指定目录下命名滴文件
      FileNam:=FileNam + '.txt';     //给文件加扩展名为TXT
      str:=str + ' ' + FileNam;     //组合SQL语句。
      str:=a+str;               
      Str:=str+str1;
    end;
  AQ_query.SQL.Text:=str;   
  try
    AQ_query.ExecSQL;
    showmessage('Backup '+ExtractFileName(FileNam) +' OK');
  except
    showmessage('Backup '+ExtractFileName(FileNam)+' Failed.');
  end;
end;执行是莫问题滴。
ntserver是另一台电脑。但就是备份不出文件。。狂郁闷中。望那位大侠解决。
  

解决方案 »

  1.   

    只能备份到SQL服务器的本地硬盘上...
      

  2.   

    莫有可以备份到客户端滴语句吗!?
    在SQL滴Query Analyzer备份语句
    exec master..xp_cmdshell 'bcp "newhj..employee" out c:\bcdeg.txt  -C -Usa'。
    有个参数-S滴,
    有用否?
      

  3.   

    我用下面的语句是可以的:建议你看看bcp的帮助,写的很清楚的:Exec master..xp_cmdshell 'bcp maste..sysfiles in D:\sysfiles.txt -c -t , -r \n -SHejh -Usa -Psa
    上面:maste为数据库名称,sysfiles为数据表,D:\sysfiles.txt为运行程序所在机器的保存文件名,
          -t后面的逗号为分隔符, Hejh为远程数据库机器名,sa为用户名和密码。
      

  4.   

    先备份到本地机上,在拷贝到指定机器上,删除数据库机器上的备份。
    注意如果有权限可以先
    winexec('net use \\DataBaseserver password /user:administrator');
      

  5.   

    server2000数据库出于安全性的考虑是不可能让客户端直接备份的,老兄不要再想入非非了!呵呵