人工智能 (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
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
begin
yourpath:=OpenDialog1.FileName;
close;
sql.clear;
SQL.Add(‘use master’);
sql.add(‘RESTORE database demo from disk=’+””+yourpath+””);
execsql;
end;
showmessage(‘恢复完毕’);
end;