delphi + ado + sqlserver2000如何完全和差异备份数据库?
完全和差异备份数据库在delphi里怎么写?
完全和差异备份数据库在delphi里怎么写?
解决方案 »
- I/O错误
- 大家看看,将运算结果赋值给某变量后参与判断与将运算结果直接参与判断的结果不同。
- 很久没来了,不知各位D友的工资是否涨了些?散分200特此庆祝!!!
- 再问个问题,Ctrl+Delete这样的组合键怎么响应??
- 有关windows外壳扩展context menu handlers问题??
- 有没有没有窗体的可输入文字的对话筐!
- 哪位大侠帮忙看看这个哪里错了???
- 如何挡截基于NET平台的程序的API?
- 我想在dbgrid中把某一bool字段全部显示为复选框,象ACCESS中一样,不用控件,怎么实现?
- Delphi中如何实现文档窗口?
- 哪位大哥有POS项目的详细软件设计书?给我看看!100分
- 关于jpeg的savetostream问题
var
s_backuppath:string;
s_server:string;
s_database:string;
s_backupfilename:string;
begin
StatusBar1.Panels[2].text:='';
StatusBar1.Panels[2].text:='请等候,数据库备份中......';
s_backuppath:=edit1.Text;
s_server:=edit2.Text;
s_database:=edit3.Text;
s_backupfilename:=s_backuppath+datetostr(now);
Adocommand1.ConnectionString :='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog='+s_database+';Data Source='+s_server;
ADOCommand1.CommandText := 'use Master';
ADOCommand1.Execute;
adocommand1.CommandText := 'execute sp_helpdevice';
adocommand1.Execute;
adocommand1.CommandText := 'backup database ' + s_database + ' to disk=''' +s_backupfilename + ''' with init';
//adocommand1.CommandText := 'backup database ' + 'BanShanDB' + ' to disk=''' +'c:\data.bak' + ''' with init';
adocommand1.Execute;
adocommand1.CommandText := 'Use ' + s_database;
adocommand1.Execute;
StatusBar1.Panels[2].text:='';
StatusBar1.Panels[2].text:='数据库备份完成!';
// application.MessageBox('已经成功备份数据库','数据库备份',MB_OK + MB_ICONINFORMATION);
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TFlatGaugeUnit, StdCtrls, TFlatEditUnit, ExtCtrls,FileCtrl;type
TBackup_F = class(TForm)
Label1: TLabel;
Label2: TLabel;
ZT_FE: TFlatEdit;
JD_FG: TFlatGauge;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Backup_F: TBackup_F;implementation{$R *.dfm}Uses
ExtIniFiles,StrUtils;function GetFileNum(dir:string):integer;
var
sr:Tsearchrec;
begin
result:=0;
if findfirst(dir,faanyfile,sr)=0 then
repeat
if(sr.Attr<>fadirectory)and(sr.Name<>'.')and(sr.Name<>'..') then
result:=result+1;
until findnext(sr)<>0;
end;
//***********************************************************************************
procedure Wait(second:Longint);
var
FirstTickCount:longint;
begin
FirstTickCount:=GetTickCount;
repeat
Application.ProcessMessages;
until ((GetTickCount-FirstTickCount) >=second);
end;
//***********************************************************************************
procedure TBackup_F.Timer1Timer(Sender: TObject);
var
myini:TExtIniFile;
cz,num:integer;
spath,dpath,name,RQ:string;
sr:Tsearchrec;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
Timer1.Enabled:=false;
myini:=TExtIniFile.Create(ExtractFilePath(Application.ExeName)+'set.ini');
cz:=myini.ReadInteger('bakup','CZ',0);
if cz=0 then
begin
spath:=ExtractFilePath(Application.ExeName)+'Data';
dpath:=myini.ReadString('bakup','BakPath','');
dpath:=dpath+'\'+AnsiReplaceStr(DateTimeToStr(now),':','');
ForceDirectories(dpath);
num:=GetFileNum(spath+'\*.*');
ZT_FE.Text:='正在备份数据库......';
JD_FG.MaxValue:=num;
if findfirst(spath+'\*.*',faanyfile,sr)=0 then
repeat
if(sr.Attr<>fadirectory)and(sr.Name<>'.')and(sr.Name<>'..') then
begin
copyfile(pchar(spath+'\'+sr.Name),pchar(dpath+'\'+sr.Name),false);
JD_FG.Progress:=JD_FG.Progress+1;
end;
Wait(100);
until findnext(sr)<>0;
ZT_FE.Text:='数据库备份成功';
MessageBox(handle,'恭喜你:数据库备份成功!','祝贺你',MB_OK or MB_ICONINFORMATION);
end
else begin
RQ:=myini.ReadString('bakup','RQ','');
spath:=myini.ReadString('bakupdian',RQ,'');
spath:=spath+'\'+RQ;
dpath:=ExtractFilePath(Application.ExeName);
dpath:=dpath+'Data';
num:=GetFileNum(spath+'\*.*');
ZT_FE.Text:='正在还原数据库......';
JD_FG.MaxValue:=num;
if findfirst(spath+'\*.*',faanyfile,sr)=0 then
repeat
if(sr.Attr<>fadirectory)and(sr.Name<>'.')and(sr.Name<>'..') then
begin
copyfile(pchar(spath+'\'+sr.Name),pchar(dpath+'\'+sr.Name),false);
JD_FG.Progress:=JD_FG.Progress+1;
end;
Wait(100);
until findnext(sr)<>0;
ZT_FE.Text:='数据库还原成功';
MessageBox(handle,'恭喜你:数据库还原成功!','祝贺你',MB_OK or MB_ICONINFORMATION);
end;
StartupInfo.cb:=sizeof(StartupInfo);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
CreateProcess(pchar(ExtractFilePath(Application.ExeName)+'TSGL.exe'),nil,nil,nil,false,0,nil,nil,StartupInfo,ProcessInfo);
close;
end;end.上面的是一个数据库备份的代码