如下代码实现恢复出现错误,语句执行到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),就会有上面的错误发生。