procedure Tbeifenhuanyuan.cxButton3Click(Sender: TObject);
var sqlstr:string;
adoquery1.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=kehu';
sqlstr :=' RESTORE DATABASE ' +cxtextedit1.text ;
sqlstr :=sqlstr+' FROM disk = '+QuotedStr(cxtextedit3.text);
adoquery1.Close;
adoquery1.SQL.Clear ;
adoquery1.SQL.add(sqlstr);
adoquery1.ExecSQL ;
showmessage(数据还原成功¦');
end;
此段代码,在还原过程中,出现数据库正在使用,你无法获得数据库的排它访问权.如果,还原其它数据库的时候,是可以还原的.不知此问题如何解决,如果在restore database前加上use master 则出现数据库还原成功,但删除的数据并没有恢复.不知是什么原因?
var sqlstr:string;
adoquery1.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=kehu';
sqlstr :=' RESTORE DATABASE ' +cxtextedit1.text ;
sqlstr :=sqlstr+' FROM disk = '+QuotedStr(cxtextedit3.text);
adoquery1.Close;
adoquery1.SQL.Clear ;
adoquery1.SQL.add(sqlstr);
adoquery1.ExecSQL ;
showmessage(数据还原成功¦');
end;
此段代码,在还原过程中,出现数据库正在使用,你无法获得数据库的排它访问权.如果,还原其它数据库的时候,是可以还原的.不知此问题如何解决,如果在restore database前加上use master 则出现数据库还原成功,但删除的数据并没有恢复.不知是什么原因?
adoquery1.SQL.add(sqlstr);
procedure TForm5.Button10Click(Sender: TObject);
begin
if opendialog1.Execute then
BackupFile.Text:=opendialog1.FileName;
end;procedure TForm5.Button11Click(Sender: TObject);
begin
if not FileExists(BackupFile.Text) then
begin
ShowMessage('未指定数据备份的文件,请重新选择备份的文件!');
Exit;
end;try
adoconnection1.Connected:=false;
if not checkbox1.Checked then
adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Password='+password.text+';Persist Security Info=True;User ID='+username.text+';Initial Catalog=master;Data Source='+ServerName.Text
else
adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source='+ServerName.Text;
adoconnection1.Connected:=true;
if KillActiveConnection then
begin
ADOConnection1.Execute('restore database '+DBName.Text+' from disk ='+''''+BackupFile.Text+''' WITH FILE = 1,NOUNLOAD , STATS = 10, RECOVERY ');
ShowMessage('恢复成功!');
end;
adoconnection1.Connected:=False;
except
on e:exception do
begin
ShowMessage('恢复数据库时发生错误!'+#13+e.Message);
end;
end;
end;function TForm5.KillActiveConnection: Boolean;
begin
Result:=False;
with ADOQuery1 do
begin
Close;
SQL.Text:='select spid from master..sysprocesses where dbid=db_id('''+DBName.Text+''')';
Open;
if recordcount>0 then
begin
if Application.MessageBox('目前数据库还存在活动连接,强行恢复数据库将使这些活动连接丢失,是否强行恢复数据库?','警告', MB_ICONWARNING+MB_YESNO+MB_DEFBUTTON2)=IDYES then
begin
First;
while not Eof do
begin
ADOConnection1.Execute('kill '+Fields[0].AsString);
Next;
end;
end
else
Exit;
end;
end;
Result:=True;
end;
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;