你是要恢复数据库!提示的意思 是原数据库正在使用,所以必须保证你要恢复的数据库不在使用中你保证exec p_killspid 'gprs0719'
可以终止所有的连接。。

解决方案 »

  1.   

    我看了下sql server企业管理器里的进程信息,显示连接上的进程所用的数据库都是master,没有gprs,真是无语了,没有人在用gprs怎么还不让恢愎,还有排他错呀
      

  2.   

    最最主要的问题是,现在杀死连接是一定的了因为
    exec pro_killpro
    restore database gprs0719 from disk='E:\测试采集\gprs0719\gprs071920100906160001.bak' with norecovery,replace 
    restore database gprs0719 with recovery 
    这样能够成功,
    现在问题出现在
    我将这两条恢愎的语句写到了文件里
    在查询分析器里执行下面的语句报错
    exec p_killspid 'gprs0719'
    exec master..xp_cmdshell 'osql -S XUHUI\GPRS -U sa -P 123 -i e:\recover.sql'
      

  3.   

    通常是
    use master
    go
    alter database gprs set single_user with rollback immediate
    go
      

  4.   

    楼上,我执行了
    Use Master    Alter Database gprs0719        SET SINGLE_USER With ROLLBACK IMMEDIATE --exec pro_restore
    --exec p_killspid  'gprs0719'
    --exec pro_killpro
    exec master..xp_cmdshell 'osql -S XUHUI\GPRS -U sa -P 123 -i e:\recover.sql'Use master;
        Go    Alter Database gprs0719        SET MULTI_USER    Go错误是:无法打开用户默认数据库。登录失败。
    NULL
      

  5.   

     设置数据库为单用户模式,无须kill sql process。
      

  6.   

    然后,我必需要说的是,我是怎么把这个问题解决的
    1、数据库排他问题,用exec p_killspid 'gprs0719'
    没有错,也可以用6楼的use master
    go
    alter database gprs set single_user with rollback immediate
    go
    但这些个语句,不能分步在外边执行,要都写到
    exec master..xp_cmdshell 'osql -S XUHUI\GPRS -U sa -P 123 -i e:\recover.sql'
    这个recover.sql文件里,文件里的内容是这样:
    use master       exec pro_killpro
    restore database gprs0719 from disk='E:\测试采集\gprs0719\gprs071920100907140001.bak' with norecovery,replace 
    restore log gprs0719 from disk='E:\测试采集\gprs0719\gprs071920100907140100.trn' with norecovery 
    restore log gprs0719 from disk='E:\测试采集\gprs0719\gprs071920100907143000.trn' with norecovery 
    restore database gprs0719 with recovery 这样做成做业,就没有问题了,在查询分析器里也没有问题,都不报错。
    再有朋友遇到这个问题,就可以不用东找西找了,哈哈哈~~~