在delphi中如何实现sql server 数据库的备份,注意不是单个单个表的备份,我要的是整各数据库的备份!!!急,在线等待!!

解决方案 »

  1.   

    with Query1 do  //备份数据库到文件
    begin
     Close; 
     SQL.Clear;
     SQL.Text := 'backup database yourdatabasename to disk = :FileName';
     Parameters.parambyname('FileName').value := strFileName;
     Execsql;
    end;with Query1 do  //从以前的备份中恢复数据库;
    begin
     Close; 
     SQL.clear;
     SQL.text := 'restore database yourdatabasename from disk = :FileName';
     Parameters.parambyname('FileName').value := strFileName;
     Execsql;
    end;
      

  2.   

    unit BackRestoreSQLDB;
      {描述:SQL SERVER 2000 数据库备份与恢复单元 ,本单元函数在SQL SERVER 2000 +Delphi7.0编译通过
      }
    interfaceuses
      adodb,db;
    function repl_substr(sub_old, sub_new, s: string): string; //把sub_old换成sub_new,后面有用。
    function BackupSQLDataBase(connstr_sql,DatabaseName,Backup_FileName:string):Boolean;//数据库备份函数
    //SQL数据数据库备份,connstr_sql是ADO控件的connectionstring,DatabaseName是数据库名称,
    //Backup_FileName要备份到的目 标文件
    function RestoreSQLDataBase(connstr_sql,DatabaseName,Restore_FileName:string):Boolean;//数据库恢复函数
    //Restore_FileName以前备份的数据库文件,
    implementationfunction repl_substr(sub_old, sub_new, s: string): string;
    var
      i: integer;
    begin
      repeat
        i := pos(sub_old, s);
        if i > 0 then
        begin
          delete(s, i, Length(sub_old));
          insert(sub_new, s, i);
        end;
      until i < 1;
      Result := s;
    end;
    function BackupSQLDataBase(connstr_sql,DatabaseName,Backup_FileName:string):Boolean;
    var
    //备份SQL数据库SQL数据数据库备份,connstr_sql是ADO控件的connectionstring,DatabaseName是数据库名称,
    //Backup_FileName要备份到的目标文件
    aADOQuery:TADOQuery;
    begin
    try
      aADOQuery:=TADOQuery.Create(nil);
      aADOQuery.Close;
      aADOQuery.ConnectionString:=connstr_sql;
      aADOQuery.SQL.Clear;
      aADOQuery.SQL.Add('backup database '+DatabaseName+' to disk = ' + '''' + Backup_FileName + ''' with format');
      Try
        aADOQuery.ExecSQL;
      Result:=true;
      Except
        Result:=false;
       exit;
      end;
     finally
      aADOQuery.Free;
     end;
    end;
    function RestoreSQLDataBase(connstr_sql,DatabaseName,Restore_FileName:string):Boolean;
    var//数据库恢复函数,estore_FileName以前备份的数据库文件
    aADOQuery:TADOQuery;
    begin
    try
      aADOQuery:=TADOQuery.Create(nil);
      aADOQuery.Close;//恢复数据库不能打开数据库,要打开系统数据库master,把连接字符串如adoconnetion的connectionstring中的数据库名称换成"master"数据库
      aADOQuery.ConnectionString:=repl_substr(DatabaseName,'master',connstr_sql);
      aADOQuery.SQL.Clear;
      aADOQuery.SQL.Add('RESTORE DATABASE '+DatabaseName+' from disk = ' + '''' + Restore_FileName + '''');
     Try
        aADOQuery.ExecSQL;
      Result:=true;
     Except
        Result:=false;
       exit;
      end;
     finally
      aADOQuery.Free;
     end;
    end;
    end.