首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Delphi中SQLSErver2000数据库备份还原,该怎么处理

2012-03-01 
Delphi中SQLSErver2000数据库备份还原在Delphi写的程序中,增加功能,数据库备份、还原,在线备份没有问题,可

Delphi中SQLSErver2000数据库备份还原
在Delphi写的程序中,增加功能,数据库备份、还原,在线备份没有问题,可是数据库还原后变为置疑,不能使用了,没有看出了哪里有问题,请高手帮忙看看。
还原的代码如下:
 AdoCnt.Close; //关闭原来的数据库连接
  if AdoCnt.Connected then  
  AdoCnt.Connected := False ;

  ADOBackup.ConnectionString := 'Provider=SQLOLEDB.1;Password='+EDIT5.TEXT+';Persist Security Info=True;User ID='+EDIT4.TEXT+';Initial Catalog=master;Data Source='+Edit3.TEXT+'';
  with ADOBackup do  
  begin
  ADOBackup.Close;
  SQL.Clear ;
  l_sql := 'use master alter database libary set offline WITH ROLLBACK IMMEDIATE ' +
  'restore database libary from disk=' + QuotedStr(Edit2.Text) + ' with REPLACE ' +
  'alter database libary set online with rollback immediate ' ;
  ADOBackUP.SQL.Text := l_sql;
   
  try
  AdoBackUp.ExecSQL ;  
  ShowMessage('恢复成功!');
  except
  ShowMessage('还原失败!');
  end;
  end;

[解决办法]
给个我的数据备份你看看
procedure TForm_Back.btn1Click(Sender: TObject);
 var
 backupfilename:string;
AQry: TADOQuery;
begin
AQry := nil;
backupfilename:=edt1.Text;
if (edt1.GetTextLen = 0) then
begin

ShowMessage('请选择备份文件的路径及文件名!');
exit;
end;

if FileExists(backupfilename) then
begin //提示已经存在是否覆盖
if Application.MessageBox('备份文件已经存在,是否要覆盖该文件??','提示',mb_yesno)=id_no then
Exit;

end ;
screen.Cursor :=crhourglass; //将鼠标的光标设置为繁忙状态,表示当前正在执行

try

AQry:=tadoquery.Create(self);

AQry.Connection:=ADOC_backup;

with AQry do
begin
AQry.Close;
AQry.SQL.Clear;
AQry.SQL.Add('backup database '+FDatabaseName);
AQry.SQL.Add(' to disk='+''''+backupfilename+'''');
AQry.SQL.Add('WITH INIT');
AQry.ExecSQL;
end;


ShowMessage('数据库数据成功备份!');

  
except
on E1: Exception do
begin
screen.Cursor:=crdefault;
ShowMessage('数据库操作失败!');
end;

end;
if AQry <> nil then
FreeAndNil(AQry);
end;

热点排行