实例应用1:

//备份procedure TF_DataBaseBackUp.Btn_bfClick(Sender: TObject);
var i:integer;
begin
if SaveDialog1.Execute then
begin
ADOConnection1.Connected:=False;
ADOConnection1.ConnectionString:=StringReplace(GetConnectionString,'Taxi','master',[rfReplaceAll]);
ADOConnection1.Connected:=True;
ADOQuery1.SQL.Text :='backup database Taxi to disk='+QuotedStr(SaveDialog1.FileName);
try
Btn_bf.Caption :=' 正在备份…';
self.repaint;
ADOQuery1.execsql;
for i:= to do
begin
Btn_bf.Caption :=' 备份中…'+inttostr(i)+'%';
self.repaint;
sleep();
end;
ShowMessage('数据备份操作已经成功完成!');
except
ShowMessage('数据备份时出错!请重试。');
end;
Btn_bf.caption:=' 开始备份';
self.repaint;
end;
end;
//恢复
procedure TF_DataBaseBackUp.Btn_hfClick(Sender: TObject);
var i:integer;
begin
if Application.MessageBox('该操作会把当前程序数据改为备份时的状态,您确定要这么做吗?','提示',mb_okcancel+MB_ICONQUESTION )<>idok then exit;
if OpenDialog1.Execute then
begin
try
ADOConnection1.Connected:=False;
ADOConnection1.ConnectionString:=StringReplace(GetConnectionString,'Taxi','master',[rfReplaceAll]);
ADOConnection1.Connected:=True;
Btn_hf.Caption :=' 清除数据库连接...';
self.Repaint;
ClearDBConnections();
Btn_hf.Caption :=' 正在恢复...';
self.repaint;
ADOQuery1.SQL.Text :='restore database Taxi from disk='+QuotedStr(OpenDialog1.FileName);
ADOQuery1.execsql;
for i:= to do
begin
Btn_hf.Caption :=' 恢复中…'+inttostr(i)+'%';
self.repaint;
sleep();
end;
Btn_hf.caption:=' 开始恢复';
self.repaint;
except
Application.MessageBox('数据恢复时出错!请重试。','提示',);
Btn_hf.caption:=' 开始恢复';
self.repaint;
exit;
end;
application.MessageBox('数据库已成功恢复!请重新启动系统!','提示:',mb_ok+mb_iconinformation);
end;
end;
//------------------------------------------------------------------------------
//函数名称: ClearDBConnections
//函数功能: 清除数据库连接
//------------------------------------------------------------------------------ procedure TF_DataBaseBackUp.ClearDBConnections;
var vspid:string;
begin
//覆盖数据库,清除数据库现有连接
ADOQuery1.Close;
ADOQuery1.SQL.Text:='select spid from sysprocesses where dbid=db_id(''Taxi'')';
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
vspid:=ADOQuery1.FieldByName('spid').AsString;
ADOQuery2.Close;
ADOQuery2.SQL.Text:='kill '+vspid;
ADOQuery2.ExecSQL;
ADOQuery1.Next;
end;
end; 实例应用2: procedure TF_BF.BitBtn1Click(Sender: TObject);
var inif:Tinifile;
T:string;
begin
inif:=Tinifile.Create(ExtractFilePath(Paramstr())+'data/SysSet.ini');
T:=inif.ReadString('Data','DbType','');
IF LENGTH(TRIM(EDIT2.Text))= THEN
BEGIN
APPLICATION.MessageBox('请指定数据备份的文件名!','林康软件',MB_OK+MB_ICONWARNING);
END
ELSE
BEGIN
if T='SQLserver' then
begin
ADOQUERY1.Close;
ADOQUERY1.SQL.Clear;
ADOQUERY1.SQL.Add('USE MASTER');
ADOQUERY1.SQL.ADD('BACKUP DATABASE GZGL to disk='+#+SAVEDIALOG1.FileName+#+' with init');
TRY
ADOQUERY1.ExecSQL;
APPLICATION.MessageBox('数据备份操作成功!','林康软件',MB_OK+MB_ICONWARNING);
EXCEPT
APPLICATION.MessageBox('数据备份操作失败!','林康软件',MB_OK+MB_ICONWARNING);
END;
close;
TRY
F_main.ADOConnection1.Close;
F_main.ADOConnection1.Open;
EXCEPT
APPLICATION.MessageBox('该系统需要重新启动, 请退出!','林康软件',MB_OK+MB_ICONWARNING);
application.Terminate;
END;
end;
if T='Access' then
begin
F_MAIN.ADOConnection1.Close;
TRY
COPYFILE(PCHAR(ExtractFilePath(Paramstr())+'DATA/gzgl.mdb'),PCHAR(EDIT2.Text),FALSE);
APPLICATION.MessageBox('数据备份操作成功!','林康软件',MB_OK+MB_ICONWARNING);
EXCEPT
APPLICATION.MessageBox('数据备份操作失败!','林康软件',MB_OK+MB_ICONWARNING);
END;
F_MAIN.ADOConnection1.Open;
end;
END;
end; 恢复:
procedure TF_HF.BitBtn1Click(Sender: TObject);
var
t:string;
inif:Tinifile;
begin
inif:=Tinifile.Create(ExtractFilePath(Paramstr())+'data/SysSet.ini');
T:=inif.ReadString('Data','DbType','');
IF LENGTH(TRIM(EDIT2.Text))= THEN
BEGIN
APPLICATION.MessageBox('请指定数据恢复的文件名!','林康软件',MB_OK+MB_ICONWARNING);
END
ELSE
BEGIN
if T='SQLserver' then
begin
if MESSAGEDLG('数据恢复操作将覆盖现有的数据,需要继续吗?',mtconfirmation,[MBYES,MBNO],) <>Mryes THEN exit;
ADOQUERY1.Close;
ADOQUERY1.SQL.Clear;
ADOQUERY1.SQL.ADD('use master declare @spid int');
ADOQUERY1.SQL.ADD('declare getspid cursor for');
ADOQUERY1.SQL.ADD('select spid from sysprocesses where dbid=db_id('+#+'GZGL'+#+')');
ADOQUERY1.SQL.ADD('open getspid');
ADOQUERY1.SQL.ADD('fetch next from getspid into @spid');
ADOQUERY1.SQL.ADD('while @@fetch_status < >-1');
ADOQUERY1.SQL.ADD('begin');
ADOQUERY1.SQL.ADD('exec('+#+'kill '+#+'+@spid)');
ADOQUERY1.SQL.ADD('fetch next from getspid into @spid');
ADOQUERY1.SQL.ADD('end');
ADOQUERY1.SQL.ADD('close getspid');
ADOQUERY1.SQL.ADD('deallocate getspid');
ADOQUERY1.SQL.ADD('RESTORE DATABASE GZGL FROM disk='+#+OPENDIALOG1.FileName+#+' WITH REPLACE');
TRY
ADOQUERY1.ExecSQL;
APPLICATION.MessageBox('数据恢复操作成功!','林康软件',MB_OK+MB_ICONWARNING);
EXCEPT
APPLICATION.MessageBox('数据恢复操作失败!','林康软件',MB_OK+MB_ICONWARNING);
END;
close;
TRY
F_main.ADOConnection1.Close;
F_main.ADOConnection1.Open;
EXCEPT
APPLICATION.MessageBox('该系统需要重新启动, 请退出!','林康软件',MB_OK+MB_ICONWARNING);
application.Terminate;
END;
end;
if T='Access' then
begin
F_MAIN.ADOConnection1.Close;
TRY
COPYFILE(PCHAR(EDIT2.Text),PCHAR(ExtractFilePath(Paramstr())+'DATA/Gzgl.mdb'),FALSE);
APPLICATION.MessageBox('数据恢复操作成功!','林康软件',MB_OK+MB_ICONWARNING);
EXCEPT
APPLICATION.MessageBox('数据恢复操作失败!','林康软件',MB_OK+MB_ICONWARNING);
END;
F_MAIN.ADOConnection1.Open;
end;
END; end; 实例应用3: 最简单的sql语句:备份与还原sql server自带的数据库 在服务器上备份:
use northwind
backup database northwind to disk=d:/northwind_bak.dat with init restore database northnwind from disk = d:/northwind_bak.dat ------------------------------------------------------------------
备份数据库这一操作在客户机上实现
客户机:machine
共享目录:share backup:
bakcup database dbname to disk=//machine/share/data.bak with init
//machine/share目录要有写权限。 restore:
restore database dbname from disk=//machine/share/data.bak //
备注:restore 语句有很多的选项,可以查看企业管理器的在线帮助。如下
with replace, move dbname_dat to c:/mssql7/data/dbname.mdf,
move dbname_log to c:/mssql7/data/dbname.log
其中c:/mssql7/data/是服务器的目录,这点要注意

delphi数据库的备份及还原的更多相关文章

  1. sqlserver多文件组数据库的备份和还原实战

    数据库文件过大时就要进行数据分区,就是讲数据库拆分到多个文件组中.已方便数据文件管理,提高数据库的读取效能,多文件组如何进行数据库的备份和还原呢,今天主要做多文件组数据库的备份和还原实验. 第一步 创 ...

  2. 如何用SQL语句实现Mysql数据库的备份与还原

    以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...

  3. SQL server 2008数据库的备份与还原、分离(转)

    SQL server 2008数据库的备份与还原.分离(转)   一.SQL数据库的备份: 1.依次打开 开始菜单 → 程序 → Microsoft SQL Server 2008 → SQL Ser ...

  4. SQLServer2008修改sa密码的方法与SQL server 2008数据库的备份与还原

    sa密码的修改转载自:http://blog.csdn.net/templar1000/article/details/20211191 SQL server 2008数据库的备份与还原转自 :htt ...

  5. mysql数据库的备份和还原的总结

    mysql数据库的备份和还原的总结 (来自一运维同事的总结) 1. 备份方式: 热备:数据库在线进行备份,不影响读和写的在线备份方式! 温备:数据库在线进行备份,对表备份时先锁定写操作,仅可以执行读操 ...

  6. 用分离、附加的方式实现sql server数据库的备份和还原

    一.数据库分离.附加的说明 SQL Server提供了"分离/附加"数据库."备份/还原"数据库.复制数据库等多种数据库的备份和恢复方法.这里介绍一种学习中常用 ...

  7. SQL Serever学习12——数据库的备份和还原

    公司的服务器奔溃了,事先没相应的保护措施,使得公司遭到了较大损失,为了以后不再出现类似事件,在系统中引入备份机制,使得数据库被破坏后损失降到最低. 数据的导出和导入 数据转换服务 数据转换服务DTS( ...

  8. 【Mongodb】数据库操作--备份、还原、导出和导入

    文章转载自点这里 mongodb数据备份和还原主要分为二种,一种是针对于库的mongodump和mongorestore,一种是针对库中表的mongoexport和mongoimport. mongo ...

  9. 关于mysql数据库的备份和还原

    在搭建网站的过程中常遇到文件的备份与还原,以备下次再使用 备份: 图中蓝色画线处为备份命令,wordpress为要备份的数据库名,.">"可将结果输出到文件中,/opt/wo ...

随机推荐

  1. [译]GLUT教程 - 创建和关闭子窗体

    Lighthouse3d.com >> GLUT Tutorial >> Subwindows >> Creating and Destroying Subwind ...

  2. pwd 命令

    Linux中用 pwd 命令来查看”当前工作目录“的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录. 在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置. ...

  3. protobuf编译安装

    为什么选择protobuf,而不选择thift和avro,原因大概几点吧,网上对比的文章很多,我主要关注以下几点 1.protobuf序列化性能最好,序列化后字节数最少. 2.protobuf是单纯的 ...

  4. Python读取word文档(python-docx包)

    最近想统计word文档中的一些信息,人工统计的话...三天三夜吧 python 不愧是万能语言,发现有一个包叫做 docx,非常好用,具体查看官方文档:https://python-docx.read ...

  5. Spring Cloud 微服务五:Spring cloud gateway限流

    前言:在互联网应用中,特别是电商,高并发的场景非常多,比如:秒杀.抢购.双11等,在开始时间点会使流量爆发式地涌入,如果对网络流量不加控制很有可能造成后台实例资源耗尽.限流是指通过指定的策略削减流量, ...

  6. 信号量semaphore解析

    1 基础概念 信号量在创建时须要设置一个初始值,表示同一时候能够有几个任务能够訪问该信号量保护的共享资源.初始值为1就变成相互排斥锁(Mutex),即同一时候仅仅能有一个任务能够訪问信号量保护的共享资 ...

  7. Android中打包JAR时获取资源ID的方法

    前言:在打包android源码的时,有的时候源码中包含了资源文件,但是jar包中不包含,所以会异常,解决的方案就是不用系统的提供的id名,而是直接 获取id,如反射. 1.系统提供的方法: /** * ...

  8. php_screw加密安装

    php_screw的安装与使用 1.下载:http://sourceforge.net/projects/php-screw/files/ php文件通常以文本格式存贮在服务器端, 很容易被别人读到源 ...

  9. poj1845(二分快速求等比数列模M和)

    Sumdiv Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 17039   Accepted: 4280 Descripti ...

  10. Lifting the Stone(多边形重心)

    Lifting the Stone Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...