反正我是用的存储过程.......也许别人有高见

解决方案 »

  1.   

    try
        with ADOQuery1 do
        begin
          Close;
          Sql.Clear;
          sql.text:=Format('BACKUP DATABASE bfwlnew TO DISK=''%s'' WITH INIT',[SaveDialog1.FileName]);//将数据库备份到用户自选的目录去。
          execsql;
    end;
      except
      on exception do
       if ADOConnection1.InTransaction then
        ADOConnection1.RollbackTrans;
       end;
       showmessage('备份成功');
    //将用户自选的数据库还原
     try
        with ADOQuery1 do
        begin
          Close;
          Sql.Clear;
          sql.add('RESTORE FILELISTONLY ');
          ss:=Format('FROM DISK=''%s''',[edit1.text]);
          Sql.Add(ss);
          Sql.Add('RESTORE DATABASE databasename');
          ss:=Format('FROM DISK=''%s''',[openDialog1.FileName]);
          sql.add(ss);
          Sql.Add('WITH MOVE ''databasename_Data'' TO ''d:\mssql7\data\testdb.mdf'', ');
          Sql.Add('MOVE ''databasename_Log'' TO ''d:\mssql7\data\testdb.ldf''');
        execsql;
       close;
       except
      on exception do
       if ADOConnection1.InTransaction then
        ADOConnection1.RollbackTrans;
       end
      

  2.   

    不是一定用存储过程,但都说用存储过程会提高效率,你也就不要走弯路了吧!
      

  3.   

    我毕设做的东东就包括这部分,但我当时可没用存储过程(那个时候我还什么都不懂),一样可以实现的。但是,最好还是用存储过程,这样可以提高效率,减轻服务器的负担,特别是当数据库较大时就更明显了。