在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;
还原的代码如下:
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;
解决方案 »
- DELPHI XE 什么时候会出64位?
- 如果更新字段的值(字段是不固定的)
- Delphi6 如何获取 SQL SERVER的用户名?
- 急:对数据库操作的问题
- 哪儿有delphi7.0完美版下载?有安装序列号!
- 有做物流系统经验的大虾,请谈谈这种开发应该具备的技能以及你们做物流系统的经验?
- 为什么我在用InterBase时会出现Your user name and password are not defined. Ask your database administrator to set up an InterBase login。
- 有人用过DCDBTreeView这个控件吗???一个朋友给了我一份原码需要这个控件,但我始终没有搜到!!!高分收购!!!!!!!
- 怎样查询? 一个小小问题.
- 第一次从网上下载控件,但却不会用,呜呜.....
- delphi 界面详解
- delphi out of memory
这时间有不需要连接数据库,为什么会报这样的错误呢。
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;