with ADOStoredProcBak do
        begin
                Close;
                try
                  try
                        Connection := ADOConnectionMaster;
                        ProcedureName := 'gp_BackupRestoreDb;1';
                        Parameters[1].Value := strBakFileName;
                        Parameters[2].Value := IntFlag;
                        Parameters[3].Value := strDbName;
                        ExecProc;
                  except
                        on E: Exception do
                        begin
                                Alert('数据库操作失败' + #13#10 + e.Message);
                                Exit;
                        end;
                  end;
                finally
                        Close;
                end;
        end;我想在大家都使用这个数据库的情况下,恢复这个数据库,怎么样才能获得这个
数据库的独占权?
有代码说明最好!

解决方案 »

  1.   

    不知道你的后台数据库是什么,根据你说的情况,“在大家都使用这个数据库的情况下,恢复这个数据库”,我觉得不可能!我是数据库的IBM UDB DBA,数据库备份、恢复时要切断所用其他的用户连接。另外还和数据库的操作系统有关。希望你原理上想想,有人在用数据,你可以独占恢复数据库,这样数据库的安全性还有没有吗?这样也太危险了。结贴吧,这个问题是没有结果的。
      

  2.   

    我后台用的是SQL Server2000!
      

  3.   

    如果象你这样的话,数据库的一致性岂不是满足不了拉,
    这样的数据库还有什么价值呢!
    如:a用户正在访问数据库,得到数据集A
    而你数据库管理员,恢复数据了
    b用户这个时候访问数据库,a和b得到的数据不一致拉
      

  4.   

    >>大家都使用这个数据库的情况下,恢复这个数据库
    这句话是矛盾的。
      

  5.   

    唯一的办法是启动另外的一个.exe来恢复数据库,我就是这样做的,没办法啦。delphi5+ado+sqlserver7.
      

  6.   

    你可以试试,我觉得应该可以,因为我就是这样作的。
    1,先执行execute sp_who找出当前用户和进程的信息
    2,然后再 kill + query1.fieldbyname('spid').asstring终止进程
    3, 使用restore Database命令恢复。
    注:数据库是使用Backup Database备分的
    以上命令均是SQL语句,具体的看帮助。
      

  7.   

    To qtercel(嗷嗷) 
    这样怎么可以?如果其他用户编辑了数据,或者录入了一大批数据,你把人家断掉,人家不找你麻烦?好容易输入的数据不能保存(kill各用户连接),你觉得可以吗?
    一切以人为本。
      

  8.   

    To S_C(知道的多不全精)
    数据库都恢复了,别人录入的还意义吗?