备份数据库——
企业管理器:
--右键一个数据库
--所有任务
--备份数据库
--备份--选择"数据库--完全" (或者"数据库--差异")
--目的--备份到中选择添加
--输入一个备份的文件名(注意,如果原来有文件名,要删除它)
--确定--或用SQL语句(完全备份):
backup database 数据库 to disk='c:\你的备份文件名'
企业管理器:
--右键一个数据库
--所有任务
--备份数据库
--备份--选择"数据库--完全" (或者"数据库--差异")
--目的--备份到中选择添加
--输入一个备份的文件名(注意,如果原来有文件名,要删除它)
--确定--或用SQL语句(完全备份):
backup database 数据库 to disk='c:\你的备份文件名'
备份数据库和再难恢复等等,都要么使用管理工具客户端,要么就在数据库服务器上进行。
你通过jdbc驱动程序提供的接口,仅仅能够进行一些数据的操纵。
因此我认为老兄大可不必在上边花时间。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls,idglobal, ExtCtrls,shellapi,strutils, Menus,
Grids, DBGridEh,SqlExpr;type
TfrmBackupRestore = class(TForm)
GroupBox1: TGroupBox;
edtFileName: TEdit;
btnView: TButton;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure FormShow(Sender: TObject);
procedure btnViewClick(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
frmBackupRestore: TfrmBackupRestore;implementation
uses
unitData,unitCommon;
{$R *.dfm}procedure TfrmBackupRestore.FormShow(Sender: TObject);
begin
if unitCommon.flag ='Backup' then
begin
caption:='系统数据库备份处理';
groupbox1.Caption :='请设置备份文件存放目录';
bitbtn1.Caption :='开始备份';
end;
if unitCommon.flag ='Restore' then
begin
caption:='系统数据库恢复处理';
groupbox1.Caption :='请选择备份文件';
bitbtn1.Caption :='开始恢复';
end;
end;procedure TfrmBackupRestore.btnViewClick(Sender: TObject);
begin
edtFileName.Text := getChooseFolder(handle,'请选择目录...');
end;procedure TfrmBackupRestore.BitBtn1Click(Sender: TObject);
var
ls_dir : string;
ls_String : String;
text : String;
begin
if edtFileName.text = '' then
begin
application.MessageBox('请选择路径!','提示',mb_ok);
//edtFileName.SetFocus;
Exit;
end; ls_dir:=ExtractFilePath(application.ExeName); ls_String:=edtFileName.text;
if rightstr(ls_String,1)='\' then
ls_String:=leftstr(ls_String,length(ls_String) - 1); if bitbtn1.Caption ='开始备份' then
begin
modlData.adoDtst_master.Active:=false;
modlData.adoDtst_master.CommandText:='';
modlData.adoDtst_master.CommandText:='select * from dbo.sysobjects where name=''Common_backup''';
modlData.adoDtst_master.Active:=true;
if modlData.adoDtst_master.RecordCount = 0 then
begin
text := 'create procedure dbo.Common_backup @sDBName varchar(50), @sPath varchar(500) as declare @sql varchar(500) ';
text:= text + 'if exists(select * from dbo.sysdevices where name=''mydiskdump'') exec sp_dropdevice ''mydiskdump'' ';
text:= text + 'if exists(select * from dbo.sysdevices where name=''mydiskdumpLog'') exec sp_dropdevice ''mydiskdumpLog'' ';
text:= text + 'set @sql = ''sp_addumpdevice ''''disk'''',''''mydiskdump'''','''''' + @sPath+''\mydiskdump.dat'''''' exec(@sql) ';
text:= text + 'set @sql = ''sp_addumpdevice ''''disk'''',''''mydiskdumpLog'''','''''' + @sPath +''\mydiskdumpLog.dat'''''' exec(@sql) ';
text:= text + 'set @sql = ''BACKUP DATABASE '' + @sDBName +'' to mydiskdump'' exec(@sql) ' ;
text:= text + 'set @sql=''BACKUP LOG '' + @sDBName + '' TO mydiskdumpLog'' exec(@sql) '; modlData.adoQuery_master.Close;
modlData.adoQuery_master.SQL.Clear;
modlData.adoQuery_master.SQL.Add(text);
modlData.adoQuery_master.ExecSQL;
end;
modlData.adoQuery_master.Close;
modlData.adoQuery_master.SQL.Clear;
modlData.adoQuery_master.SQL.Add('exec dbo.Common_backup ''veteran'','''+ls_String+'''');
modlData.adoQuery_master.ExecSQL; application.MessageBox('备份成功!','提示',mb_ok);
end
else
begin
if not FileExists(ls_String+'\mydiskdump.dat') then
begin
application.MessageBox('未找到备份文件!请重新选择!','提示',mb_ok);
Exit;
end
else
begin
if modlData.adoConn.Connected=true then modlData.adoConn.Close; modlData.adoDtst_master.Active:=false;
modlData.adoDtst_master.CommandText:='';
modlData.adoDtst_master.CommandText:='select * from dbo.sysobjects where name=''Common_restore''';
modlData.adoDtst_master.Active:=true;
if modlData.adoDtst_master.RecordCount = 0 then
begin
text := 'create procedure dbo.Common_restore @sDBName varchar(50) as declare @sql varchar(500),@spid int ';
text:= text + 'set @sql=''declare getspid cursor for select spid from sysprocesses where dbid=db_id('''''' + @sDBName + '''''')'' ';
text:= text + 'exec(@sql) open getspid fetch next from getspid into @spid while @@fetch_status <>-1 begin ';
text:= text + 'exec(''kill '' + @spid) fetch next from getspid into @spid end ';
text:= text + 'close getspid deallocate getspid ';
text:= text + 'set @sql = ''RESTORE DATABASE '' + @sDBName +'' from mydiskdump WITH NORECOVERY'' exec(@sql) ' ;
text:= text + 'set @sql = ''RESTORE LOG '' + @sDBName +'' from mydiskdumpLog'' exec(@sql) ' ; modlData.adoQuery_master.Close;
modlData.adoQuery_master.SQL.Clear;
modlData.adoQuery_master.SQL.Add(text);
modlData.adoQuery_master.ExecSQL;
end;
modlData.adoQuery_master.Close;
modlData.adoQuery_master.SQL.Clear;
modlData.adoQuery_master.SQL.Add('use master');
modlData.adoQuery_master.ExecSQL;
modlData.adoQuery_master.SQL.Clear;
modlData.adoQuery_master.SQL.Add('exec dbo.Common_restore ''veteran''');
modlData.adoQuery_master.ExecSQL; modlData.adoConn.Connected:=true; application.messagebox('恢复成功!','提示',mb_ok);
end;
end;
end;
procedure TfrmBackupRestore.BitBtn2Click(Sender: TObject);
begin
close;
end;end.
你可以先设计一个JSP页面来实现一个按钮,然后给这个按钮一个响应事件就可以了,在响应时用SQL语句来实现数据库的备份就OK了.不过这样你可是绕了一圈,我认为效率不好.