给个例子吧! 其他自己改改吧!
//===备份数据库
procedure TDBBakResFrm.BtnDBBakClick(Sender: TObject);
var
DB:String;
begin
if (edt_DataPath.Text <> '') and (ListBoxDb.Items.Text <> '') then
begin
DB := trim(ListBoxDb.Items[ListBoxDb.ItemIndex]);
if ADOConn.Connected then
ADOConn.Connected := false;
with ADOCom do
begin
try
MMInfo.Lines.Clear;
MMInfo.Lines.Add('正在备份数据库中,请稍后......');
CommandText := 'use Master';
Execute;
CommandText := 'execute sp_helpdevice';
Execute;
CommandText := 'backup database ' + DB + ' to disk=''' + trim(edt_DataPath.Text) +'\'+ DB + FormatDateTime('yyyymmddhhmmss',Now) +'.Bak'+ ''' with init';
Execute;
CommandText := 'Use ' + DB;
Execute;
MMInfo.Lines.Add('');
MMInfo.Lines.Add('恭喜您!数据库已经备份成功!');
MessageBox(Handle,'备份成功!','信息提示!',MB_OK+MB_ICONINFORMATION);
ADOConn.Connected := true;
except
MMInfo.Lines.Add('');
MMInfo.Lines.Add('不好意思!数据库已经备份失败!');
MessageBox(Handle,'备份失败,请重新测试服务器!','信息提示!',MB_OK+MB_ICONERROR);
end;
end;
end
else
begin
MMInfo.Lines.Add('数据库未连接成功......!');
MessageBox(Handle,'数据库备份路径不能为空,请选择!','信息提示!',MB_OK+MB_ICONINFORMATION);
edt_DataPath.SetFocus;
end;
end;
/===还原数据库
procedure TDBBakResFrm.BtnResDbClick(Sender: TObject);
var
DB:String;
begin
DB := Cb_DbList.Text;
if Cb_DbList.Text = '' then
begin
MessageBox(Handle,'还原数据库名不能为空,请选择!','信息提示!',MB_OK+MB_ICONINFORMATION);
Cb_DbList.SetFocus;
Exit;
end
else if edt_ReDataPath.Text = '' then
begin
MessageBox(Handle,'原备份文件不能为空,请填写!','信息提示!',MB_OK+MB_ICONINFORMATION);
edt_ReDataPath.SetFocus;
Exit;
end
else
begin
if ADOConn.Connected then
ADOConn.Connected := false;
with ADOCom do
begin
try
CommandText := 'use Master';
Execute;
CommandText := 'restore database ' + DB + ' from disk=''' + trim(edt_ReDataPath.Text) + ''' with replace';
Execute;
CommandText := 'use ' + DB;
Execute;
MessageBox(Handle,'还原成功!','信息提示!',MB_OK+MB_ICONINFORMATION);
ADOConn.Connected := true;
except
MessageBox(Handle,'还原失败,请重新测试服务器!','信息提示!',MB_OK+MB_ICONERROR);
end;
end;
end;
end;