SQL变更数据库失败 – 由检查点进程使用

在我的SQL Server 2008上,我有一个SQL代理作业每晚恢复一个数据库。 程序:

  1. find其他服务器上的最新备份
  2. 杀死所有的目标数据库
  3. 使用replace,恢复来还原目标数据库

它上个周末失败了,因为数据库正在被一个系统进程(spid 11 checkpoint)使用。 因为我不能杀死系统进程,我通过重新启动sql server来解决这个问题。 它在这个周末也失败了,同样的错误(在这个数据库中的checkpint进程和sp_who ),当我运行时:

 SELECT session_id,request_id,command,status,start_time FROM sys.dm_exec_requests WHERE session_id = 11 

表明:

 11 0 CHECKPOINT background 2010-04-06 10:17:49.103 

每次失败都无法重新启动服务器。
任何人都可以帮我解决这个问题吗?

提前致谢

Manjot

不要杀死小于50的SPID! 这些是系统过程

看看你是否可以把数据库从“恢复”状态尝试

 RESTORE DATABASE MyDB WITH RECOVERY 

编辑,评论之后

假设你想恢复数据库,不关心保持它…

停止SQL Server,将MDF / LDF移到其他地方,启动SQL Server。

数据库脱机(我忘记了确切的状态)。 然后你可以放下它,恢复它

固定 – 因为它每天恢复。 我已经从重新索引,dbcc checkdb,更新统计信息等维护计划中排除它。

即使他们在单独的时间表运行,排除数据库解决了这个问题。

尝试一下,而不是杀死开放的连接

 ALTER DATABASE myDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

然后做恢复,或者更好的,放弃它,然后恢复。

完成之后,不要忘记将数据库返回到之前的状态:

 ALTER DATABASE myDatabase SET MULTI_USER