在DELPHI程序中如何对SQL数据库进行数据恢复?(100分)

  • 主题发起人 主题发起人 foner
  • 开始时间 开始时间
F

foner

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在的做法是用QUERY部件进行恢复,语句如下:
close;
SQL.CLEAR;
SQL.ADD('use master RESTORE DATABASE beier FROM data');
Prepare;
ExecSQL;
但是运行时多数不能成功,总是报错:因为数据库正在使用中,所以未能获得
对数据库的排它访问权。
即使把这一段程序单独写一个工程,并且数据库不连接其他任务,执行时也是
同样情况的出错。
请问是否有什么比较好的办法进行数据恢复呢?
谢谢!
 
各位大虾帮帮忙吧:)
 
对数据库进行恢复时必须断开所有的数据库连接。
 
我也知道要断开,但是在一个运行的DELPHI程序中怎么实现恢复?
我已经试过恢复操作前把DATABASE的CONNECTED属性设为FALSE了,还是那样子。

 
补充:如果DELPHI程序不运行,在SQL的查询分析器中运行这个语句:
use master RESTORE DATABASE beier FROM data
那是可以恢复的。但问题是在DELPHI程序中怎么实现呢?是不是还有什么设置?
 
没人答吗?:(
 
1. ADOConnection1 连接你的业务数据库。
2. ADOConnection2 连接 MASTER 数据库。
3. ADOCommand1.Connection := ADOConnection2;
假设你的数据库名为: DataBaseName
Button.OnClick:
begin
ADOConnection1.Connected := False;
ADOCommand1.CommandText := 'BACKUP DATABASE DataBaseName TO DISK = ' + #39 + 'C:/KKK.BAK' + #39;
ADOCommand1.Execute;
ADOCommand1.CommandText := 'ALTER DATABASE DataBaseName SET OFFLINE WITH ROLLBACK IMMEDIATE';
ADOCommand1.Execute;
ADOCommand1.CommandText := 'RESTORE DATABASE DataBaseName FROM DISK = ' + #39 + 'C:/KKK.BAK' + #39;
ADOCommand1.Execute;
ADOCommand1.CommandText := 'ALTER DATABASE DataBaseName SET ONLINE WITH ROLLBACK IMMEDIATE';
ADOCommand1.Execute;
ADOConnection1.Connected := True;
ADOTable1.Active := true;
end;
 
接受答案了.
 
后退
顶部