SQL Alter 数据库失败 - 正在由检查点进程使用

SQL Alter 数据库失败 - 正在由检查点进程使用

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

  1. 在其他服务器上查找最新备份
  2. 终止与目标数据库的所有连接
  3. 使用替换和恢复功能恢复目标数据库

上周末失败了,因为数据库正被系统进程(spid 11 检查点)使用。由于我无法终止系统进程,我通过重新启动 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

每次服务器出现故障时我都无法重新启动它。
有人能帮我解决这个问题吗?

提前致谢

曼约特

答案1

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

要查看是否可以将数据库从“恢复”状态中移除,请尝试

RESTORE DATABASE MyDB WITH RECOVERY

评论后进行编辑

假设您想恢复数据库但不想保留它......

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

数据库离线(我忘记了确切的状态)。然后你可以删除它,然后恢复它

答案2

已修复-因为它每天都会恢复。我已将其从重新索引、dbcc checkdb、更新统计等维护计划中排除。

即使它们在单独的时间表内运行,排除数据库也可以解决问题。

答案3

不要关闭打开的连接,而是尝试

ALTER DATABASE myDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE

然后进行恢复,或者更好的是,删除它,然后恢复。

完成后,不要忘记将数据库恢复到以前的状态:

ALTER DATABASE myDatabase SET MULTI_USER

相关内容