今天做一个11亿条数据的更新,用的SSIS里面的DEBUG模式,用了好久没结束,就点了方块结束了。结果发现数据库还在运行那个UPDATE语句,就用exec sp_who2查出来的SPID给kill了。kill后很长时间一直在回滚,不想等了就强制结束了MSSQLSERVER的服务,然后重启服务。这下完了,那个表也被锁了,X锁,数据库也被锁了,S锁更可气的是用sp_who2看,有一个sa用户执行的BACKGROUND进程,执行内容是DB STARTUP
kill不了,说只能kill用户进程但是这个进程一直阻塞我所有数据库操作语句,包括detach,truncate,drop,删数据库,都不行,愁死了!!解决不了回不了家了,大家有没有谁有经验?能把这个数据库干掉就行!

解决方案 »

  1.   

    1.在任务管理器里把所有与MSSQL有关的进程都强制关掉,再把数据库文件删除.
    2.如果1不行,则 format c: (设MSSQL装在C盘,不然的话,装在哪个盘格哪个盘)!
    3.如果2还不行,把主板和硬盘拆下来,找个锤子把分别砸几下,再装上试试.
      

  2.   

    这个...我前几天也遇到过类似,处理起来超麻烦的.
    即使你取消操作,SQL Server也要花好大的代价进行前滚和回滚操作.
    楼主11亿条记录实在恐怖,当务之急先把数据库设为简单恢复模式.
    否则日志文件(LDF)撑死你的硬盘.
      

  3.   

    即使停止服务后删除文件,重启服务后,
    SQL Server还是会自动在执行一个CheckPoint进程,
    也就是回滚之类的操作,确保事务的一致性.
      

  4.   

    个人认为2楼的方法3可以一试
    每次sqlserver服务启动的时候确实要做大量的工作,这个也是负担很大
    不过还有一招
    重装sqlserver肯定管用
      

  5.   

    前几天确实遇到过的,重建了日志文件后,
    系统后台总有个CheckPoint的进程在锁住整个数据库.
    DML都无法执行,Kill SPID也不行(提示是后台进程).
    后来只能
    异机恢复-->DBCC CHECKDB-->卸离-->删日志文件-->附加在异机-->异机卸离.
    -->原机器停止服务-->删除MDF,LDF-->用异机的MDF,LDF来替换.
      

  6.   

    表不要,库也不要,都不行?
    上面说的关服务,直接删库文件,让服务重启后,此库置疑就行了更新是什么意思?update表?update、删肯定是要写日志的,一次性涉及记录数多,写日志肯定会拖死
    truncate表本来可以不写日志的,update好像就没有不写日志的做法了