如何实现SQL Server数据库的备份与恢复
|
|
|
作者:佚名
来源:InterNet 加入时间:2007-1-26 |
备份: procedure TBackupFrm.BitBtn2Click(Sender: TObject); begin if Edit1.Text= ' then begin Showmessage('无选择要保存的文件名'); exit; end; try try dmData.adoQryTmp.Active:= false; dmData.adoQryTmp.SQL.Clear; dmData.adoQryTmp.SQL.Add('BACKUP DATABASE [dzyl] TO DISK = ''+edit1.text+'' WITH INIT'); dmData.adoQryTmp.ExecSQL; finally begin dmData.adoQryTmp.Active:= false; Showmessage('数据库备份成功!'); end; end; except on e:exception do begin ShowMessage('数据库备份失败!'); end; end; end; --------------------------- 恢复 procedure TBackupFrm.BitBtn4Click(Sender: TObject); begin if Edit2.Text = ' then begin showmessage('未选择要恢复的数据库文件!'); exit; end; with dmData do begin try adocmmd.CommandText:='use master'; adocmmd.Execute; adocmmd.CommandText:='alter database dzyl set offline with rollback immediate'; adocmmd.Execute; adocmmd.CommandText:='restore database dzyl from disk= ''+edit2.Text+'' with
recovery '; adocmmd.Execute; adocmmd.CommandText:=' alter database dzyl set online with rollback immediate'; adocmmd.Execute; showmessage('数据库恢复成功!'); application.Terminate; except on e:exception do begin showmessage('数据库恢复失败!'+e.Message); end;
end; end; 其中dmData.adoQryTmp连接的是系统MASTER数据库,备份还原之前应该关闭要备份还原的AdoConn数据库
连接AdoConn.Connected:=False; ------------------------------------------------ 另一方法: 备份如下: try backupString := 'BACKUP DATABASE [Paper] TO DISK = N''+edit1.Text+'' WITH
INIT , NOUNLOAD , NAME = N'Paper 备份', NOSKIP , STATS = 10, NOFORMAT'; adoquery1.Close; adoquery1.SQL.Clear; adoquery1.SQL.Add(backupString); ADOQuery1.Prepared; adoquery1.ExecSQL; application.MessageBox('备份成功。','提示',0); except application.MessageBox('备份出错!请重新备份数据。','出错',0); end; --------------------------- 还原如下: if opendialog1.Execute then begin try adoquery1.Close(); adoquery1.SQL.Clear; adoquery1.SQL.Add('use master'); adoquery1.Prepared; adoquery1.ExecSQL; restorestring := 'RESTORE DATABASE [Paper] FROM DISK =
N''+opendialog1.FileName+'' WITH FILE = 1, NOUNLOAD , STATS = 10, REPLACE,RECOVERY'; self.ADOCommand1.CommandText := restoreString; adocommand1.Execute; application.MessageBox('还原数据成功','提示',0);
adoquery1.Close(); adoquery1.SQL.Clear; adoquery1.SQL.Add('use paper'); adoquery1.Prepared; adoquery1.ExecSQL; except application.MessageBox('还原数据出错!请重新还原,并停止一切的数据操作!
','提示',0); end; end;
[文章录入员:nancy] |
|
|
|
|