今天,我遇到了一种情况,我想取消对一个表和几个索引的更新,然后立即从备份中恢复数据库。
我发出了一个杀死命令来杀死更新的SPID。然后,我发出了一个带有状态的杀戮,有数万秒的回滚等待。我需要匆忙地恢复数据库(因此不关心回滚)--但您不能关闭正在回滚的SPID (据我所知),也不能恢复具有出色连接的数据库。
我决定停止sql服务,删除数据库的mdf和ldf物理文件,启动sql服务-它显示数据库处于可疑状态。然后还原数据库。
是否有更受控制/更明智的方法来处理这种情况?
发布于 2009-05-29 17:20:08
正确-您不能关闭正在回滚的SPID,因为数据库将被放入一个事务不一致的状态(甚至可能在结构上不一致)。
因此,简单的答案是,SPID一旦启动,就没有办法阻止它回滚,只能做一些激烈的事情。
你的处境很难摆脱,因为你真的别无选择。即使您弹出Server,数据库也会经历崩溃恢复,您需要等待它完成。
解决这一问题的几种可能方法:
一旦您处于这种状态,基本上没有一个好的解决方案,只有让回滚完成。我对你所做的事犹豫不决,因为很多没有经验的人可能会尝试,让自己陷入真正的水深火热之中。
谢谢
发布于 2009-05-29 18:11:12
我认为您是以最有效的方式完成的,但是我可能会重命名文件,而不是删除它们,以防万一。或者把它们转移到另一个存储地点。
https://serverfault.com/questions/14827
复制相似问题