DBABootcamp
在处理资料库还原的时候,常常会出现 (the database is in use) 错误讯息。
顾名思义,就是因为还有人或者是应用程式还正在连结使用这个资料库, 所以 SQL Server 拒绝让任何人还原这个资料库。解决办法很简单,就是用 sp_who2 找出连线的 SPID ( Server Process ID), 然后用 kill 指令杀掉这个 SPID. 就可以继续进行资料库还原的动作了。
如果只有一两个 SPIDs 要 kill, 可以慢慢用 kill 指令来处理,但若有几十个或几百个 SPIDs 要 kill, 就必须要用比较科学的方法解决。可以使用这个 T-SQL 一次搞定 kill 所有的 SPIDs.
但是,如果遇到一些侵略性很高很黏的连结设定就有点麻烦。当这个连结的 SPID 被 killed 后,马上又迅速的自动产生新的连结。根本就没办法完全杀乾净。这个时候,可以拿出杀手锏,就是找出这个侵略性很高的 login,然后停用 (disable) 这个 login. 让它没有办法在连上资料库。等到资料库还原完成后,再启用 (enable) 这个 login.