procedure TForm1.btnBackupClick(Sender: TObject);
begin
  adoQuery1.SQL.Clear;
  adoQuery1.SQL.add('BACKUP DATABASE [altans] TO ');
  ADOQuery1.SQL.add('DISK = '''+EDIT1.Text +'''WITH NOINIT, ');
  ADOQuery1.SQL.add('NOUNLOAD, NAME="altans 备份",');
  Adoconnection1.BeginTrans;
  try
    adoquery1.ExecSQL;
    adoconnection1.CommitTrans;
    showmessage('备份成功');
  except
    adoconnection1.RollbackTrans;
    showmessage('备份失败');
  end;
end;报错:对象或提供程序不能执行所需的操作。
这是什么问题呢?

解决方案 »

  1.   

    EDIT1.Text  是用savedialog的到的路径
      

  2.   

    'DISK = '''+EDIT1.Text +'''WITH NOINIT, ' 
    你看看是不是With NoINIT 前面要留一个空格,你现在的with NOINIT是和EDIT1.TEXTDE中的值紧挨着的
      

  3.   

    With NoINIT 前面少了空格了吧
      

  4.   

    with adocommand_restore do//用ADocommand控件
        begin
              CommandText:='use Master';//
              Execute;
              CommandText:='execute sp_helpdevice';//系统存储过程
              Execute ;
              CommandText:='backup database '+'db_name'+' to disk='''+FileName+''' with init';//这行应当是这样
              Execute ;
              CommandText:='Use '+'db_name';//这行应当是这样
              Execute ;
    application.MessageBox('已经成功备份数据库','数据库备份',MB_OK + MB_ICONINFORMATION);
      

  5.   

    to pdbird(老巢):
      我用你的程序4了下,还报错:对象或提供程序不能执行所需的操作
    是不是有可能我数据库建的不好呢,但是我可以连上数据库啊,真是奇怪
      

  6.   

    不好意思各位,是我数据库建的有问题,呵呵
    我第一次用sql数据库 
    连select * from table_name 也报同样的错
    看来我要去检查检查数据库了