首先备份数据库,然后各处都取该*.dat文件来还原

解决方案 »

  1.   

    这是数据备份还原的过程,你根据需要改一下:
    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;
    其中SKJC为数据库名