小弟想备份数据库,需要把数据库脱机,但是提示错误,执行transact-SQL语句或批处理时发生异常

解决方案 »

  1.   

    首先,备份数据库为什么要脱机呢?
    其次,你的情况可能是正有连接在数据库上执行,数据库加锁了,无法执行脱机操作。sp_lock看看数据库上有没有锁存在,sp_who看看有没有计算机连接在数据库上。
      

  2.   

    有时侯在备份时选择了忽略已脱机的数据库,所以对不用的用户数据库我是会脱机的,要用的时候才联机。的确有这个需求。
    对于这个报错,解决办法是从数据库查询select * from sys.sysprocesses where blocked<>0找出那些连接在阻塞,然后dbcc inputbuffer (阻塞的spid)找到这些动作,然后把脱机的那个spid杀掉。
    这然重新脱机即可。
    为了保证以后不发生这种情况,先确保该数据库清掉了其他连接再脱机。
      

  3.   

    KILL其他Connection然后在Offline,否则无法获得锁。或者用
    USE [master]GOALTER DATABASE <dbname> SET SINGLE_USER WITH ROLLBACK IMMEDIATEGO