Unit BackRestoreSQLDB;
interface
uses
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以前备份的数据库文件,
implementation
function 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.
interface
uses
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以前备份的数据库文件,
implementation
function 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.