在数据库还原中,我写了这样一个过程:
  procedure CopyDataBase(var Bool: Boolean; str, path, server,
  passw: string);
var
  Conn:TADOConnection;
  query:TADOQuery;
  str1:string;
begin
   Conn:=TADOConnection.Create(self);
   query:=TADOQuery.create(self);
   str1:='Provider=SQLOLEDB.1;';
   str1:=str1+'PassWord='+passw+';'+'Persist Security Info=True;User ID=sa;';
   str1:=str1+'Data Source='+server;
   conn.Connectionstring:=str1;
   conn.LoginPrompt:=false;
   query.Connection:=conn;
   if not Bool then begin
   try
    with query do
    begin
      Close;
      Sql.Clear;
      sql.text:=Format('BACKUP DATABASE skjc TO DISK=''%s'' WITH INIT',[path]);//将数据库备份到用户自选的目录去。
      execsql;
      //还原数据库
      Close;
      Sql.Clear;
      sql.add('restore database skjc from disk='''+trim(path)+'''');
      execsql;
      close;
    end;
   except
   on exception do
   if Conn.InTransaction then
      Conn.RollbackTrans;
    end;
   end
   else
    begin
     try
      with query do
       begin
         close;
         sql.Clear;
         sql.Add('select ''存在'' where  exists (select * from sysdatabases where name =''skjc'')');
         open;
         if recordcount=0 then begin
         //创建数据库
         close;
         sql.clear;
         sql.add('create database skjc');
         execsql;
         end;         //还原数据库
         Close;
         Sql.Clear;
         sql.add('restore database skjc from disk ='''+trim(path)+'''');
         execsql;
         close;
        end;
       except
       on exception do
       if Conn.InTransaction then
          Conn.RollbackTrans;
    end;
    end;
    conn.Free;
    query.Free;
end;然后调用:
  CopyDataBase(bool,'','数据备份文件\skjc',computer,password);
注意:这个目录一定要存在,否则会报错!