在作数据库恢复时出现下列情况,请帮忙
程序如下:
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('restore database lm from disk='''+‘e:\aa.mdf’+'''');
adoquery1.ExecSQL;
运行后出现提示:‘因为数据库正在使用,所以未能获得对数据库的排它访问权’
请问是何原因?如何处理?
注释如下:e盘下绝对有aa.mdf数据库文件
          数据库是sql sever 2000;

解决方案 »

  1.   

    str:='BACKUP DATABASE kmschedule TO disk= ''c:\kmschedule.bak'' WITH init,NAME = ''Full Backup of kmschedule'''; //备份
    str1:='restore DATABASE kmschedule from disk= ''c:\kmschedule.bak'' WITH replace'; //恢复
     adoquery1.Close; adoquery1.SQL.Clear;
     adoquery1.SQL.Add(str);
     adoquery1.Prepared;
     adoquery1.ExecSQL;
      

  2.   

    看看以前的帖子!
    你需要
    1 用sp_who或者
    select dbname = case
    when dbid = 0 then null
    when dbid <> 0 then db_name(dbid)
    end, loginame from master..sysprocesses where hostname is not null
    group by  dbid,loginame
    等察看有谁在使用数据库
    2 用kill process终止
    3 再进行数据库恢复--------------------------------------
    看见了么,
    那支蛾子,
    正飞向太阳,
    那就是我!
    --------------------------------------
      

  3.   

    看看以前的帖子!
    你需要
    1 用sp_who或者
    select dbname = case
    when dbid = 0 then null
    when dbid <> 0 then db_name(dbid)
    end, loginame from master..sysprocesses where hostname is not null
    group by  dbid,loginame
    等察看有谁在使用数据库
    2 用kill process终止
    3 再进行数据库恢复
      

  4.   

    可以用存储过程在数据库中实现 看看sqlserver 的帮助 关于恢复数据库的章节
    在程序中调用该过程就行了
      

  5.   

    勇敢的蛾子firetoucher(风焱) 我查不到啊
    烦你帮忙写详细一些
    我还很基础的,你不要过高的估计了我的实力
    谢谢!!
      

  6.   

    问题再简单不过了,你的ADOQUERY1连接串连的是你正在使用的数据库,把它改正MASTER就可以了。
      

  7.   

    1﹑另外再建一個ADOCONNECT2。(用來連接MASTER數據庫)。
    2。放一個ADOADOQUERY1設置connect為ADOCONNECT2。
    3﹑adoquery1.close;
    adoquery1.sql.clear;
    adoquery1.sql.add('restore database lm from disk=''e:\aa'' with replace');
    adoquery1.ExecSQL;
    其中﹕aa 為你的數據庫備份。(不是你的數據庫文件)
      

  8.   

    如果是ORACLE的话..有一个静默模式,使用的用户必须为SYSTEM的..我不知道MSSQL有没有这样的功能..