在我的SQL Server 2008上,我有一个SQL代理作业每晚恢复一个数据库。 程序:
它上个周末失败了,因为数据库正在被一个系统进程(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