function pRestoreDataBase(DataBaseName, BackupFileName : String) : Boolean;
var
TempTab : TADOQuery;
begin
TempTab := TADOQuery.Create(nil);
if FileExists(BackupFileName)=false then
begin
Result:=false;
exit;
end;
try
TempTab.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master';
TempTab.CommandTimeout:=120;
TempTab.SQL.Add('USE master');
TempTab.SQL.Add('alter database '+DataBaseName+' set offline WITH ROLLBACK IMMEDIATE');
//TempTab.SQL.Add('exec killspid '+DataBaseName+'');
TempTab.SQL.Add('RESTORE DATABASE '+DataBaseName+' FROM DISK = '''+BackupFileName+''' with recovery');
TempTab.SQL.Add('alter database '+DataBaseName+' set online with rollback immediate');
TempTab.ExecSQL;
TempTab.Free;
Result := True;
except
TempTab.Free;
Result := False;
end;
end;
数据还原的时候程序向死掉一样,没有响应,不能达到还原的目的,望哪个大哥解答一下,分不是问题
var
TempTab : TADOQuery;
begin
TempTab := TADOQuery.Create(nil);
if FileExists(BackupFileName)=false then
begin
Result:=false;
exit;
end;
try
TempTab.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master';
TempTab.CommandTimeout:=120;
TempTab.SQL.Add('USE master');
TempTab.SQL.Add('alter database '+DataBaseName+' set offline WITH ROLLBACK IMMEDIATE');
//TempTab.SQL.Add('exec killspid '+DataBaseName+'');
TempTab.SQL.Add('RESTORE DATABASE '+DataBaseName+' FROM DISK = '''+BackupFileName+''' with recovery');
TempTab.SQL.Add('alter database '+DataBaseName+' set online with rollback immediate');
TempTab.ExecSQL;
TempTab.Free;
Result := True;
except
TempTab.Free;
Result := False;
end;
end;
数据还原的时候程序向死掉一样,没有响应,不能达到还原的目的,望哪个大哥解答一下,分不是问题
TempTab.SQL.Add('alter database '+DataBaseName+' set offline WITH ROLLBACK IMMEDIATE');
TempTab.SQL.Add('RESTORE DATABASE '+DataBaseName+' FROM DISK = '''+BackupFileName+''' with recovery');
TempTab.SQL.Add('alter database '+DataBaseName+' set online with rollback immediate');
如果我把上述语句转换成SQL语句在查询分析器里执行,如果我同时打开程序,数据还原同样等上很长时间都没反应,我怀疑是在关闭数据连结的时候出问题,哪个大人指点一下,小弟不胜感激!!!!!!111
adocmd.CommandText:='use master';
adocmd.Execute;
adocmd.CommandText:=' alter database Dzyl set offline with rollback immediate';
adocmd.Execute;
adocmd.CommandText:='restore database Dzyl from disk= '''+edtName.Text+''' with recovery ';
adocmd.Execute;
adocmd.CommandText:=' alter database Dzyl set online with rollback immediate';
adocmd.Execute;
showmessage('数据库恢复成功!');
application.Terminate;
except
on e:exception do
begin
showmessage('数据库恢复失败!'+e.Message);
end;
end;