一切的开始

人工智能 (artificial intelligence)

把以前的东西都整理了一下,发觉SQL的备份和恢复还不会,特地到大富翁查了下,收获不小,但好像ADO也有些毛病,可是我现在用的还好,可能还没遇到吧(比如大数据,效率)。

1。把SQL备份恢复给做出来

1.1 数据库保存机制

数据备份结构:2005Y_05M_26D_21h_23m_32s_000.aisql

randomize;
FormatDateTime(‘YYYY’,date)+’Y_’+FormatDateTime(‘MM’,date)+’M_’+FormatDateTime(‘DD’,date)

+’D_’+FormatDateTime(‘hh’,time)+’h_’+FormatDateTime(‘mm’,time)+’m_’+FormatDateTime(‘ss’,time)

+’s_’+inttostr(random(99))+’.aisql’;

特加2位随机数字。

1.2备份,恢复

1说数据库在用,备份后就不能恢复

解决:

用master数据库去恢复

SQL.Add(‘use master’)

要load一个数据库必须它是在单用户模式下或只有被恢复的数据库的DBO一个用户登录才行的。
办法有四个
1、把网络连接去掉,只在本机操作,然后kill掉所有的其它用户
2、把其它可能登录的用户密码改掉,让它登录不下,然后kill掉所有的其它用户
3、起动SQL-server时,用它的单用户模式,具体请自己参考资料
4、设置要恢复的数据为单用户模式,具体请自己参考资料  

2对话框不能默认到D盘

解决:

D:??好了?

3对话框按CANCEL就出错

现在又变成恢复成功。

但还是要解决

解决:还没解决。不是关键BUG

4分钟的mm错误。老是显示12

解决:

原因未知,避免错误,用hh-mm-ss格式。

备份:

var
yourpath:string;
begin
with adoquery1 do  //yourpath是你save dialog指定的路径和文件名称
begin
randomize;
yourpath:=’d:\’+FormatDateTime(‘YYYY’,date)+’Y_’+FormatDateTime(‘MM’,date)+’M_’+FormatDateTime(‘DD’,date)+’D_’+FormatDateTime(‘hh_mm_ss’,time)+’_’+inttostr(random(99))+’.aisql’;
close;
sql.clear;
sql.add(‘backup database demo to disk=’+””+yourpath+””);
execsql;
end;

还原:

var
yourpath:string;
begin
OpenDialog1.DefaultExt :=’d:’;
OpenDialog1.Filter:= ‘aisql备份文件(*.aisql)|*.aisql|’+’所有文件(*.*)|*.*|’ ;
OpenDialog1.Execute;
with adoquery1 do  //yourpath是你save dialog指定的路径和文件名称
begin
yourpath:=OpenDialog1.FileName;
close;
sql.clear;
SQL.Add(‘use master’);
sql.add(‘RESTORE database demo from disk=’+””+yourpath+””);
execsql;
end;
showmessage(‘恢复完毕’);
end;

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据