数据的恢复 ( 积分: 10 )

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

fuxin198311

Unregistered / Unconfirmed
GUEST, unregistred user!
我正在做一个数据的备份与恢复的程序 现在就是恢复的没用 点恢复控钮出现这样的错误
project project2.exe raised ecception class EOleException with message'因为数据库正在使用,所以未能获得对数据库的排它访部权。'precess stopped.use step or Run to continue.
但是我没其它的程序正在使用呀,错在那呢 下面是我的代码
procedure Tbackup_disk.BitBtn2Click(Sender: TObject); //恢复
var
conn:TADOConnection;
ado:TADOCommand;
msg:TMessageWindow;
begin
if comboedit2.Text='' then
begin
messagedlg('请选择要恢复的数据库文件',mtInformation ,[mbOK],0);
exit;
end;
msg := TMessageWindow.Create(application);
msg.SetMessage('正在恢复,可能需要几分钟时间,请稍等');
try
conn := TADOConnection.Create(nil);
conn.LoginPrompt := false;
conn.Connected := false;
conn.ConnectionString:=' Provider=SQLOLEDB.1;Password=sql;Persist Security Info=True;User ID=sa;Initial Catalog=wage;Data Source=IT001/CJPROD';
Twage.ADOConnection1.Free; //关掉原先已经打开的数据库连接
conn.Connected := true;
ado := TADOCommand.Create(nil);
ado.Connection := conn;
ado.CommandTimeout := 3000;
msg.Show;
Application.ProcessMessages;
sleep(100);
ado.CommandText := 'RESTORE DATABASE wage FROM DISK = '''+ OpenDialog1.FileName+ '''';
ado.Execute;
ado.Free;
msg.Close;
msg.Free;
msg := nil;
messagedlg('数据库恢复完成',mtInformation ,[mbOK],0)
except
msg.Close;
msg.Free;
MessageDlg('数据库恢复失败,请确认没有其它程序已经连接到数据库。',mtInformation ,[mbOK],0);

end;

end;
 
首先执行
ALTER DATABASE wage SET OFFLINE WITH ROLLBACK IMMEDIATE
然后恢复
最后执行
ALTER DATABASE wage SET ONLINE WITH ROLLBACK IMMEDIATE
 
我看资料 怎么数据的恢复语法是用 restore 呢
'RESTORE DATABASE wage FROM DISK = '''+ OpenDialog1.FileName+ ''''
 
后退
顶部