如下代码实现恢复出现错误,语句执行到ALTER语句时执行不下去,然后出现超时错误,
carpart是我的数据库(delphi6+sql2000),
adoconnection1连接在carpart上,adoq通过adoconnection2连接到master上。
procedure Tfrmmain.N19Click(Sender: TObject);
begin
adoconnection1.connected:=false;
ADOQ.ExecuteOptions:=[eoAsyncFetch];
ADOQ.SQL.text:='ALTER DATABASE carpart SET SINGLE_USER ';
ADOQ.ExecSQL;
if opendialog1.Execute then
begin
ADOQ.SQL.text:='RESTORE DATABASE carpart FROM Disk='''+Opendialog1.FileName+'''';
ADOQ.ExecSQL;
end;
adoconnection1.connected:=true;
end;
注:在没有用过任何连接前,语句可执行成功,但要是执行过一个连接(比如:有个adpquery1通过adoconnection1连接到数据库,执行过查询,再把它关闭(close),就会有上面的错误发生。
carpart是我的数据库(delphi6+sql2000),
adoconnection1连接在carpart上,adoq通过adoconnection2连接到master上。
procedure Tfrmmain.N19Click(Sender: TObject);
begin
adoconnection1.connected:=false;
ADOQ.ExecuteOptions:=[eoAsyncFetch];
ADOQ.SQL.text:='ALTER DATABASE carpart SET SINGLE_USER ';
ADOQ.ExecSQL;
if opendialog1.Execute then
begin
ADOQ.SQL.text:='RESTORE DATABASE carpart FROM Disk='''+Opendialog1.FileName+'''';
ADOQ.ExecSQL;
end;
adoconnection1.connected:=true;
end;
注:在没有用过任何连接前,语句可执行成功,但要是执行过一个连接(比如:有个adpquery1通过adoconnection1连接到数据库,执行过查询,再把它关闭(close),就会有上面的错误发生。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货