我用程序还原数据库,结果出现因为数据库正在使用,所以未获得数据库的排它访问权!的错误,以下是还原代码,请大家帮忙看看哪里错了,如何可以解决这个错误,在线等待,谢谢。
function repl_substr(sub_old, sub_new, s: string): string;
var
  i: integer;
begin
  repeat
    i := pos(sub_old, s);
    if i > 0 then
    begin
      delete(s, i, Length(sub_old));
      insert(sub_new, s, i);
    end;
  until i < 1;
  Result := s;
end;
function RestoreSQLDataBase(connstr_sql,DatabaseName,Restore_FileName:string):Boolean;//数据库恢复函数,estore_FileName以前备份的数据库文件
begin
try
  DataModule2.adoquery1.Close;//恢复数据库不能打开数据库,要打开系统数据库master,把连接字符串如adoconnetion的connectionstring中的数据库名称换成"master"数据库
  // DataModule2.ADOConn.Close;
  DataModule2.adoquery1.ConnectionString:=repl_substr(DatabaseName,'master',connstr_sql);  DataModule2.adoquery1.SQL.Clear;
  DataModule2.adoquery1.SQL.Add(' RESTORE DATABASE '+DatabaseName+' from disk = ' + '''' + Restore_FileName + '''');
 Try
  DataModule2.adoquery1.ExecSQL;
  Result:=true;
 Except
    Result:=false;
   exit;
  end;
 finally
  DataModule2.adoquery1.Free;
 end;
end;
以下是调用函数:
x2,y2,z2:string;
a2:boolean;X2:=DataModule2.ADOQuery1.ConnectionString;
Y2:='HOTELDB';
Z2:=edit2.text;
a2:=RestoreSQLDataBase(X2,Y2,Z2);